【发布时间】:2018-09-04 10:04:25
【问题描述】:
我想使用 Mongoose 和 ajax 异步向 mongodb 查询两个不同且不同的东西。
代码如下:
var teams, faculties;
userModel.find({}).sort('-score').exec((err, result) => {
teams = result;
});
userModel.aggregate([{
"$group": {
_id: "$faculty",
average: {
$avg: "$score"
}
}
}]).exec((err, result) => {
faculties = result;
});
res.render('/scoreboard', {
information: [teams, faculties]
})
是否有更好的实现来处理异步运行的查询?
【问题讨论】:
-
这将失败,因为它会在数据库调用返回之前尝试同步调用
res.render。要解决此问题,请将res.render部分移动到第二个回调中。更好的是,重写它,以便对数据库的两个调用并行运行。由于它们是使用回调完成的,因此您可以使用名为async的 npm 库来组合它们。或者,您可以将它们包装在 Promise 中并使用Promise.all组合它们。 -
@DavidKnipe 你能给我一些关于如何实现的提示吗?感谢您的有用评论。
-
这两种调用银行的方法是在一个函数内吗?在请求中,响应?我需要更多代码来为您提供答案。