gpt4 book ai didi

json - '如何通过 node.js mongodb 驱动程序有效地流式传输大型 json 文档?

转载 作者:可可西里 更新时间:2023-11-01 10:42:03 26 4
gpt4 key购买 nike

我正在编写一个 node.js 应用程序,它通过 mongo node.js 驱动程序查询 mongodb 数据库。我想路由到呈现大型 json 文档的链接,但是,出于性能考虑,我想流式传输该文档。

代码如下:

var express = require("express"),
app = express(),
MongoClient = require("mongodb").MongoClient;

MongoClient.connect("mongodb://localhost:27017/database", function(err,db) {
var query = db.collection("manzanas").find({ "_id": "query" })
.project({ "_id":0 });

app.get("/link", function(req,res) {
query.stream().on("data", function(d) { res.json(d); });
query.stream().on("end", function() { console.log("done"); res.end(); });
});

});

app.listen(8080, function() {
console.log("server is on!");
});

问题是,我第一次尝试访问链接时,一切都按预期工作,但是当我尝试刷新页面或从另一个选项卡或浏览器访问路由时,在页面尝试时不呈现 json 文档刷新好像互联网连接很慢;最终什么也没有显示。

我不知道如何修复它,如果我不流式传输文档并按原样显示它,我不会遇到任何问题,但是,我想知道如何使其与流一起工作。为了让它再次工作,我必须完全退出 node.js 进程,但这不是生产模式场景的选项。

我怎样才能做到这一点,最好的方法是什么?有没有不使用 express.js 的更好方法?非常感谢任何评论。

感谢您的帮助。

最佳答案

改为这样做

  app.get("/link", function(req,res) {
var query = db.collection("manzanas").find({ "_id": "query" })
.project({ "_id":0 });
query.stream().on("data", function(d) { res.json(d); });
query.stream().on("end", function() { console.log("done"); res.end(); });
});

即每次请求和流式传输时生成查询。

关于json - '如何通过 node.js mongodb 驱动程序有效地流式传输大型 json 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887467/

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