如何在 javascript 中等待获取数据?

问题描述 投票:0回答:1

所以我从 mongodb atlas 获取数据,然后将其存储在一个数组中,然后将其传递到 pug 中,但这里的问题是我认为 pug 文件是在获取数据之前渲染的。 这是代码

if (req.body.day === "Monday") {
            var slotData = []
            monday.find({})
                .then(found => {
                    // console.log(found);
                    var inislotData = found[0][req.body.slots]
                    const namesToDeleteSet = new Set(inislotData);
                    slotData = namearray.filter((name) => {
                        // return those elements not in the namesToDeleteSet
                        return !namesToDeleteSet.has(name);
                    });
                    for (let index = 0; index < slotData.length; index++) {
                        const element = slotData[index];
                        member.find({name:element})
                            .then(foundnumer=>{
                                // console.log(foundnumer[0].number)
                                numberarray.push(foundnumer[0].number)
                                // console.log(numberarray)
                            })
                    }
                    
                })
                .then(dat=>{
                    finaldata = [slotData,numberarray]
                    console.log(finaldata[1])
                    res.render('data', { finaldata })   
                })
        }
javascript mongodb express mongoose pug
1个回答
0
投票

你必须回报每个

then

的承诺
if (req.body.day === "Monday") {
  var slotData = [];
  monday
    .find({})
    .then((found) => {
      // console.log(found);
      var inislotData = found[0][req.body.slots];
      const namesToDeleteSet = new Set(inislotData);
      slotData = namearray.filter((name) => {
        // return those elements not in the namesToDeleteSet
        return !namesToDeleteSet.has(name);
      });
      const promises = [];
      for (let index = 0; index < slotData.length; index++) {
        const element = slotData[index];
        promises.push(member.find({ name: element }));
      }
      return promises;
    })
    .then((array) => array.map((item) => item[0].number))
    .then((dat) => {
      finaldata = [slotData, numberarray];
      console.log(finaldata[1]);
      res.render("data", { finaldata });
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.