gpt4 book ai didi

node.js - 如何迭代 Model.stream waterline 查询的每条记录?

转载 作者:可可西里 更新时间:2023-11-01 09:59:01 25 4
gpt4 key购买 nike

我需要做类似的事情:

Lineup.stream({foo:"bar"}).exec(function(err,lineup){

// Do something with each record
});

阵容是一个包含超过 18000 条记录的集合,所以我认为使用 find 不是一个好的选择。执行此操作的正确方法是什么?从文档中我无法弄清楚如何去做。

最佳答案

.stream()方法返回 node stream interface (读取流)在读取数据时发出事件。您在这里的选择是 .pipe()到其他可以接受“流”输入的东西,比如服务器的响应对象,或者附加一个 event listener从流发出的事件。即:

管道响应

Lineup.stream({foo:"bar"}).pipe(res);

设置事件监听器

var stream = Lineup.stream({foo:"bar"});

stream.on("data",function(data) {
stream.pause(); // stop emitting events for a moment
/*
* Do things
*/
stream.resume(); // resume events
});

stream.on("err",function(err) {
// handle any errors that will throw in reading here
});

.pause().resume() 非常重要,否则处理中的内容只会在代码完成之前继续响应发出的事件。虽然这对于小情况来说很好,但对于接口(interface)打算用于的较大“流”来说,这是不可取的。

此外,如果您像这样在事件处理程序中调用任何“异步”操作,那么您需要注意回调或 promise 解析中的 .resume(),从而等待它完成自身的“异步”操作。

但是请查看前面链接的“Node 文档”以获取有关“流”的更深入的信息。

P.S 我相信如果下面的语法更适合你的感受,它也应该被支持:

 var stream = Lineup.find({foo:"bar"}).stream();

关于node.js - 如何迭代 Model.stream waterline 查询的每条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31690392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com