【发布时间】:2020-04-22 14:15:17
【问题描述】:
仅在从数据库加载数据后,我才尝试从我的网站加载某个页面。但是,它过早地打印结果,给出一个空数组,并且根本没有对名称进行分组。我相信这可以通过 async 和 await 函数或回调来解决,但我是新手,尽管我已经搜索过,但我仍然找不到解决方案。到目前为止,我一直在搞乱在异步函数中包装某些循环或函数并等待它们。其他解决方案专注于一个 .find() 或其他循环。任何帮助表示赞赏!谢谢!
Routes.js:
app.get("/test", async (req, res) => {
var result = [];
users.findById(mongo.ObjectID("IDString"), async (err, res) => {
result = await res.getGroups(users, messages);
});
console.log(result);
//this should print [["name1"]["name1", "name2"],["name3", "name1"]]
res.redirect("/");
});
获取组:
UserSchema.methods.getGroups = async function(users, messages) {
var result = [];
await messages.find({Group: this._id}, (err, group) => {
for(var i = 0; i < group.length; i++){
var members = group[i].Group;
var subArray = [];
members.forEach((memberID) => {
users.findById(memberID, (err, req) => {
console.log(req.name);
subArray.push(req.name);
console.log(subArray);
});
});
//After function finishes:
console.log(subArray);
result.push(subArray);
subArray = [];
}
});
return result;
};
【问题讨论】:
标签: javascript node.js mongodb asynchronous async-await