我正在使用Mongoose的中间件处理Node JS + Mongo DB中的Rest API,其中一种方法允许恢复与某个用户相关的内容。
到目前为止,我一直在检索所有用户的内容,但数据量开始增长,现在我需要以某种方式流式传输数据。
我想要实现的行为是服务器用10-20个项目的流来回答请求,然后,如果客户端需要更多数据,则需要发送另一个请求,这将得到回复以下10-20项。
我能想出的就是回答那些前10-20项,然后,如果客户需要更多数据,为我的方法提供一个新的(可选)参数,这将允许客户端发送最后一项的ID,这样服务器就可以发回以下10-20项。
我知道这种方法会起作用,但我觉得它太原始了;必须有一种更简洁的方法来实现这种行为,因为它是很多Web应用程序必须实现的行为。
所以,我的问题是:你知道有什么更好的方法来解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
提供从请求中读取偏移量和限制的功能,然后执行以下操作:
db.collection.find().skip(20).limit(10)
此外,在您构建的API上设置默认值,以便某人无法一次请求一百万条记录。也许最大结果总是200,如果请求没有设置上述参数,则返回前200个结果。