Javascript 在foreach中使用foreach并从第一个foreach中丢失变量mongodb
我希望查找每个“打开”项目的集合,而不是在不同集合中查找每个项目的登录用户。但是在第一个Javascript 在foreach中使用foreach并从第一个foreach中丢失变量mongodb,javascript,mongodb,Javascript,Mongodb,我希望查找每个“打开”项目的集合,而不是在不同集合中查找每个项目的登录用户。但是在第一个.finally()之后,变量'code=users'变为空,以从.foreach保存用户 var code = ""; var project_details = ""; var users = ""; var endcode= ""; MongoClient.connect(url, { useNewUrlParser:
.finally()
之后,变量'code=users'变为空,以从.foreach
保存用户
var code = "";
var project_details = "";
var users = "";
var endcode= "";
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) throw err;
const db = client.db(dbname);
//find projects which are open
let collection = db.collection('project');
collection.find({ status: "open" }).forEach(function (project) {
//find users that signd in for that project
let collection = db.collection('users');
collection.find({ project: project.id }).forEach(function (user) {
users = user.name + users;
})
.catch((err) => { console.log(err); })
.finally(() => {
code = users;
});
//console.log(code); is empty and this point
//foreach project
project_details = "Project:" + project.name + ", Users: " + code;
endcode = endcode + project_details;
})
.catch((err) => { console.log(err); })
.finally(() => {
res.render('projects', { code: endcode });
client.close();
});
//////
});
endcode
中的预期结果应该是项目:Projectname1,用户:User1,User2项目:Projectname2,用户:User3,User4…
如何防止丢失写入的变量
code
?您没有等待集合。find
函数完成。console.log
在集合之前执行。find
已完成执行,即使我将console.log()
放在第一个中。finally()
,当我在第二个中调用它时。finally()
它仍然是空的。。