【发布时间】:2021-01-03 02:59:33
【问题描述】:
我正在尝试使用 node.js 生成一个文档,该文档需要从 mongo 数据库运行多个不相关的数据库查询。
这是我当前的代码:
Data.find({}, function(err, results) {
if (err) return next(err);
//finished getting data
res.render('page');
}
}
问题是如果我尝试运行另一个查询,我似乎必须将它嵌套在第一个查询中,以便它在开始之前等待第一个查询完成,然后我必须将 res.render() 放入其中最里面的嵌套查询(如果我不这样做,将在数据库完成抓取数据之前调用 res.render(),并且不会与页面一起呈现)。
我必须做的:
Data.find({}, function(err, results) {
if (err) return next(err);
//finished getting data
Data2.find({}, function(err, results2) {
if (err) return next(err);
//finished getting data 2
res.render('page');
}
}
}
}
我将有超过 2 个查询,所以如果我继续嵌套它们,它会很快变得非常混乱。有没有更简洁的方法来做到这一点,例如让代码等到所有数据返回并运行函数后再继续执行脚本?
【问题讨论】:
-
用例是什么?您想要两个查询的所有结果还是数据以某种方式“关联”?两种情况都有不同的答案。看起来您实际上正在使用mongoose,但如果您确认这一点会很好。
-
是的,我正在使用猫鼬。数据不相关,我正在尝试创建站点地图,有些我只是为各种数据集生成 url 列表。
-
您认为提供的答案中是否有某些内容无法解决您的问题?如果是这样,那么请对答案发表评论,以澄清究竟需要解决哪些尚未解决的问题。如果它确实回答了您提出的问题,请注意Accept your Answers您提出的问题。
-
Promise 是不必要的,只会让代码更加混乱。只需使用异步。