我的问题是我写了很多数据(大约16,000个条目),每个条目都上传到我的Mongo数据库中,因为我在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
});
}
});
如果我使用db.close()
,则会导致我的应用程序崩溃,因为我没有将连接恢复到循环内部。
如果我将db.close()
移出循环,它将上载所有文档,但不会继续处理脚本的其余部分,只会停顿。
这让我很沮丧,因为我是JS新手,我们将不胜感激
谢谢。
答案 0 :(得分:-2)
它“死机”的原因可能是如果未以异步方式调用您的方法。然后它阻塞了线程。同上,可能您应该将db.close()放在循环之外,但以异步方式调用整个方法。
我想这将解决问题。