【问题标题】:How do I efficiently page a large collection of query results with Sails.js / Waterline?如何使用 Sails.js / Waterline 有效地分页大量查询结果?
【发布时间】:2015-10-24 13:50:32
【问题描述】:

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

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

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

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

    更多信息在这里:http://sailsjs.org/documentation/concepts/models-and-orm/query-language 搜索分页:)

    【讨论】:

    • 啊,谢谢!我很确定我忽略了一些东西
    【解决方案2】:

    如果您想保持 storage agnostic 水线特征,您将不得不查看您的实际架构实现(即使,如果您正在编写 storage不可知论者)。

    你可以:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多