我正在尝试通过node.js将数据插入MongoDB数据库中
从addToDatabase
调用函数for loop
。无论进行多次迭代,该脚本都不会将数据插入数据库,直到完成所有迭代(在for循环结束时为止)。
我只希望脚本在每次迭代后完成数据库插入操作。
先谢谢了。
这是我的代码:
const mongoClient = require('mongodb').MongoClient;
function addToDatabase(data){
MongoClient.connect(config.database.url, {useNewUrlParser: true}, function(err, db) {
if (err) throw err;
var dbo = db.db(config.database.dbName);
dbo.collection(config.database.collectionAd).insertOne(data, function(err, res) {
if (err) throw err;
console.log('Ad insered : ' + data._id);
db.close();
});
});
}
function getAdDetails(ads){
for (var itemKey in ads.items) {
//Statements ...
addToDatabase(obj);
}
}
getAdDetails(obj)
答案 0 :(得分:1)
此代码中有些东西不是最佳的。
Promise.all
等待所有插入完成改为尝试类似的方法
const mongoClient = require('mongodb').MongoClient
(async function () {
// connect
try {
await mongoClient.connect(config.database.url, { useNewUrlParser: true })
const db = mongoClient.db(config.database.dbName)
// do stuff
const results = await db.collection(config.database.collectionAd).insertMany(ads.items)
console.log('Ads insered : ', results)
} catch (err) {
console.log(err)
}
// close connection at the end
mongoClient.close()
})()