我正在尝试实现一个基于游标的分页服务器。我使用 neo4j 作为数据库。我对生成记录游标感到困惑。我知道光标应该是唯一的和连续的才能正确生成分页。我认为我们不能将 neo4j ID 作为光标。在我的数据库中,每个节点都有唯一的 uuid,但这并不意味着它是连续的。我还创建了可以使用的数据库字段,但该字段可能不是唯一的。使用 ne04j 解决此问题的正确方法是什么?
您可以使用 ORDER BY 子句的组合来生成游标,如果您将数组作为参数与订单字段一起传递,您可以动态构建游标并将其连接到创建的日期和 ID 以确保唯一性
例如,如果您想返回按用户名排序的记录,请像下面这样。您可以在创建之前按任意数量的字段和 id 进行排序
params: {
cursorKeys: ['name', 'createdAt', 'id'],
cursor: 'dave:20240105:123456hhghg' //previous cursor,
skip: 10,
limit: 10
}
WITH user,
apoc.text.join([k IN $cursorKeys | user[k] ]':') as cursor
WITH user, cursor
WHERE cursor > $cursor
return user
ORDER BY user.name, user.createdAt, user.id
SKIP $skip
LIMIT $limit