所以我从 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 })
})
}
你必须回报每个
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 });
});
}