如何使用Sails.js / Waterline有效地分页大量查询结果?

时间:2015-10-24 13:50:33

标签: sails.js waterline

我正在使用Waterline ORM背后的大型数据集。在几个用例中,我需要对数千个记录中的许多/大多数进行一些处理。

到目前为止,我一直在使用.find(),但是执行并返回整个结果集。是否有一个Sails / Waterline方法来迭代查询结果 - 它保留了ORM的存储无关的方面?

2 个答案:

答案 0 :(得分:3)

你可以使用paginate,比如 - > Model.find()。paginate({page:xx,limit:xx});

此处有更多信息:http://sailsjs.org/documentation/concepts/models-and-orm/query-language 搜索分页:)

答案 1 :(得分:2)

如果您想保持存储不可知水线特征,您必须查看实际的架构实现(甚至,如果您正在编码存储不可知)。

你可以:

  1. 使用@holzanic答案等分页,但这可能会在某些存储技术中出现性能问题。
  2. Use streams.
  3. 如果要列出模型中的整个对象,可以确保可以通过id制作分页。您可以在查询中获取前n个元素,然后尝试获取其id属性大于上一页中最后一个接收的下一页。