gpt4 book ai didi

javascript - 是否有另一种方法可以在此函数之外关闭 MongoDB 连接?

转载 作者:行者123 更新时间:2023-12-02 23:31:32 26 4
gpt4 key购买 nike

我有一个相当大的数据集,需要从我的node.js应用程序上传到mongo数据库,它通过for循环运行以获得每个结果。最初我在每个循环中都连接到 MongoDB,但这导致它崩溃。

由于我已将其移出循环,db.close() 会导致问题,如果我将其留在循环中,它将关闭连接(因为连接不会在循环应用程序崩溃):MongoError:服务器实例池被破坏

但是,如果我将其移到循环之外,它将被卡住并且不会离开循环并继续执行其他操作。

有谁知道如何在 for 循环之外有效地关闭我的数据库连接,只有在它完成迭代后?

MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydatabase");
//run sql query to get data

for(result in sqldata) {

myobj = {Number: sqldata[result].Num} //<--- this for loop produces 16000 entries

dbo.collection("customers").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close(); //<--- this is the issue
});
}
});

最佳答案

您可以等待插入操作。

MongoClient.connect(url, async (err, db) => {
if (err) throw err;
var dbo = db.db("mydatabase");
let results = [];
//run sql query to get data

for(result in sqldata) {
myobj = {Number: sqldata[result].Num} //<--- this for loop produces 16000 entries

results.push(
new Promise((resolve) => {
dbo.collection("customers").insertOne(myobj, (err, res) => {
console.log(err ? 'Document not inserted' : 'Document inserted');
resolve();
})
})
);
}

await Promise.all(results);

db.close();
});

关于javascript - 是否有另一种方法可以在此函数之外关闭 MongoDB 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474403/

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