如果您需要从所有数据中生成一个大的JSON字符串,那么您几乎坚持将所有内容都存储在内存中,然后再将其存储在内存中。
另一种方法是将每个项目作为单独的JSON字符串,并使用换行符作为分隔符。这样,只要处理完一个项目,就可以将其串化并使用节点流将其管道化为响应,并且在客户端中,您还可以逐行处理收到的数据。它会去是这样的:
// For each page of data you get, loop over the items like you say
for item in dataset // Yes that's Coffeescript
// Manipulate the item as you need, then make a JSON string out of it
jsonStr = JSON.stringify(item) + '\n'
// Pipe the string to your http response
jsonStr.toStream().pipe(res) // Assuming 'res' is the Express response object
这不是接近您的问题的唯一途径,但特别是如果你喜欢使用JSON这是最简单的实现方式之一。虽然我对Sails没有任何经验,但我想基本的实现将是一样的。
我希望我的答案可以帮助你,如果不是随意评论。
注意:.toStream()
方法来自我的模块streammagic,但当然有其他方法可以从字符串中产生流。
这应该是可行的使用WebSockets。我认为WebSockets是作为一个可写的流实现的,所以你可以为每个出现的块创建'socket.write(json)'。 我不确定,没有时间检查,所以我没有把它作为答案。 –