我对用于同时检索多个数据库记录的Promise方法并不熟悉,我想重写现有代码以使用Promise
我在Express中有这段代码:
getController.getData = function(req,res, collection, pagerender) {
var id = req.params.id;
collection.find({}, function(err, docs){
if(err) res.json(err);
else res.render(pagerender, {data:docs, ADusername: req.session.user_id, id: req.params.id});
console.log(docs);
});
};
现在,我想在此处使用Promise,因此可以对数据库进行更多查询。有人知道我该怎么做吗?
答案 0 :(得分:1)
首先,检查collection.find({})
是否返回承诺。如果是这样,那么您可以像下面这样调用代码:
collection.find({}).
then(function(docs){
res.render(pagerender, {data:docs, ADusername: req.session.user_id, id: req.params.id});
})
.catch( function(err) {
res.json(err);
})
如果您要在此处进行更多调用,只需创建新的数据库调用并添加另一个.then
块即可。
我建议您阅读有关承诺的文档,只是为了大致了解它们(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)。如果需要,您还将看到如何在同一函数中处理成功和拒绝。