Node.js 在foreach()中使用findOne

Node.js 在foreach()中使用findOne,node.js,mongodb,express,mongoose,async-await,Node.js,Mongodb,Express,Mongoose,Async Await,我只是在学猫鼬和野猫。在完成教程后尝试我自己的项目 我有两种模式:“单位”(包含单位编号)和“用户”(拥有单位的用户) 一个用户可以拥有多个公寓,每个公寓中可以有多个用户 在“平面”模型中,我将用户居住在“用户”属性中的每个平面中。我还拥有用户拥有的“用户”模式的公寓注册财产中的公寓 现在,当一个用户登录到他的网页时——我想把他注册的公寓的所有详细信息传递给这些公寓的所有其他用户 我试过了 flatsRegistered.foreach((userFlat) => { Flat.f

我只是在学猫鼬和野猫。在完成教程后尝试我自己的项目

我有两种模式:“单位”(包含单位编号)和“用户”(拥有单位的用户)

一个用户可以拥有多个公寓,每个公寓中可以有多个用户

在“平面”模型中,我将用户居住在“用户”属性中的每个平面中。我还拥有用户拥有的“用户”模式的公寓注册财产中的公寓

现在,当一个用户登录到他的网页时——我想把他注册的公寓的所有详细信息传递给这些公寓的所有其他用户

我试过了

flatsRegistered.foreach((userFlat) => {
    Flat.findOne({ flat: userFlat }, function (err, flatFound) {
        if (!err) {
            console.log(flatFound.users) //assign flatFound.users to a variable which i pass to webpage using ejs
        }
    });
}

问题是foreach循环在Flat.findOne完成之前完成。有没有办法在foreach继续之前强制完成Flat.findOne?在阅读了一些东西之后,我发现了async/Wait和promise的概念——但我真的不知道如何使用它们(即使它们是适用的)。请提供帮助。

只需使用
等待
就可以了,如下所示:

for(已注册公寓的const userFlat){
const flatFound=wait Flat.findOne({Flat:userFlat});
console.log(flatFound.users)//将flatFound.users分配给我使用ejs传递给网页的变量
}

欢迎来到SO!请阅读
flatsRegistered.foreach((userFlat) => {
    Flat.findOne({ flat: userFlat }, function (err, flatFound) {
        if (!err) {
            console.log(flatFound.users) //assign flatFound.users to a variable which i pass to webpage using ejs
        }
    });
}