The data looks as follows:
13 users with id's 2-13. User 2 got 2 likes, user 10 got 2 likes, user 3 got 1 like. The rest didn't get any likes.
Prisma query looks like this:
return this.prisma.user.findMany({
skip: Number(page) * Number(size),
take: Number(size),
orderBy: { likesReceived: { _count: "desc" }
});
When I send a query to the database, ordering by likesReceived I get these responses:
page | size | items id's |
---|---|---|
0 | 5 | 2, 10, 3, 4, 14 |
1 | 5 | 6, 7, 8, 9, 11 |
2 | 5 | 12, 13, 14 |
User 14 appears twice, and user 5 is missing. Why?
Additional sorting by id fixes the problem:
return this.prisma.user.findMany({
skip: Number(page) * Number(size),
take: Number(size),
orderBy: [{ likesReceived: { _count: "desc" } }, { id: "asc" }],
});
Results:
page | size | items id's |
---|---|---|
0 | 5 | 2, 10, 3, 4, 5 |
1 | 5 | 6, 7, 8, 9, 11 |
2 | 5 | 12, 13, 14 |
When is specifying a second parameter in orderBy with pagination necessary for it to work well?