【问题标题】:How to stream data in a Node JS + Mongo DB REST API?如何在 Node JS + Mongodb REST API 中流式传输数据?
【发布时间】:2015-07-21 16:47:18
【问题描述】:

我正在 Node JS + Mongo DB 中开发一个 Rest API,由 Mongoose 的中间件处理,其中一种方法允许恢复与某个用户关联的内容。

到目前为止,我一直在检索用户的所有内容,但数据量开始增长,现在我需要以某种方式流式传输数据。

我想要实现的行为是让服务器用 10-20 个项目的流来回答请求,然后,如果客户端需要更多数据,它需要发送另一个请求,该请求将被回答以下 10-20 项。

我能想到的只是回答前 10-20 个项目,然后,如果客户需要更多数据,则为我的方法提供一个新的(可选)参数,这将允许客户发送最后一个item的id,这样服务器就可以发回以下10-20个item。

我知道这种方法会奏效,但我觉得它太原始了;必须有一种更简洁的方法来实现这种行为,因为这是许多 Web 应用程序必须实现的那种行为。

所以,我的问题是:你知道解决这个问题的更好方法吗?

提前致谢。

【问题讨论】:

    标签: node.js mongodb mongoose stream


    【解决方案1】:

    提供从请求中读取偏移量和限制的能力,然后执行以下操作:

    db.collection.find().skip(20).limit(10)
    

    此外,在您构建的 API 上设置默认值,这样某人就不能一次请求一百万条记录。也许 max results 总是 200,如果请求没有设置上述参数,则返回前 200 个结果。

    【讨论】:

    • 是的,但是如果在第一次请求之后创建了新项目呢?
    • 当跳过和限制条件抓取数据库中的最后一个结果时,它们将出现在结果集中。顺序由它们插入数据库的时间决定,因此它们会出现在数据库中。
    猜你喜欢
    • 2019-10-30
    • 2019-10-29
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多