我实现了无限滚动,并尝试在用户每次到达页面底部时获取新条目。
问题是,neo4j返回已经返回节点
我读到ORDER BY
是这种情况下必须的,但它没有帮助。
我试着按照这里的解决方案:How to paginate query results with cypher?,并将pagination clauses (LIMIT, SKIP...)
放在WITH
子句之前,但它不起作用。它还抛出了一个错误
查询:
MATCH(shops: Shop)
WHERE shops.title = ~ '(?i).*${search}.*'
WITH shops
ORDER BY shops.title asc
SKIP $skip
LIMIT $limit
MATCH(products: Product) < -[relation: SELL] - (shops)
RETURN shops, products, relation
查询如何保证每个请求都有新的项?
- 注意--
limit
始终为12,而skip
是items数组的长度,客户端app包含在请求中。
编辑1 -来自复制数据库的图像
可以示出从两个查询返回具有相同ID的节点。
第一页-跳过0,限制12
第二页-跳过12页,限制12页
1条答案
按热度按时间42fyovps1#
当
order by
面对2个或更多具有相同值的节点时,Neo4j没有回退。我尝试将order by
与title
Timer
进行比较,发现有几个Shops
与此title
进行比较。解决方法是将回退添加到另一个比较中。ORDER BY shops.title, shops.id
奇怪的是,neo4j不提供故障保护(例如,节点的ID),并且在使用skip时发送相同的节点。