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()
它仍然是空的。。