我的模块包含
module.exports.findByUser = function(username, callback){
var test = db.collection("somecollection");
test.find({Username: username}, callback);
}
我的路线配置如下:
router.get('/page', ensureAuthenticated, function(req, res, next) {
var username = req.user.username;
somemodule.findByUser(username, function(err, resp){
console.log(resp.toArray());
});
res.render('page', {title: 'test page'})
});
Console.log输出Promise。
我的问题是:如何获取findByUser函数以从查询返回结果数组? 也许这甚至不是正确的方法。
答案 0 :(得分:2)
您需要在光标上使用toArray()
方法来返回结果数组,如下所示:
module.exports.findByUser = function(username, callback){
var test = db.collection("somecollection");
test.find({Username: username}).toArray(callback);
}
可以称为
router.get('/page', ensureAuthenticated, function(req, res, next) {
var username = req.user.username;
somemodule.findByUser(username, function(err, resp){
console.log(resp);
res.render('page', {
title: 'test page',
data: resp
});
});
});
使用异步/等待,您可以按照以下步骤进行操作:
module.exports.findByUser = function(username){
const test = db.collection("somecollection");
return test.find({Username: username}).toArray(); // return promise
}
称为
router.get('/page', ensureAuthenticated, async function(req, res, next) {
const resp = await somemodule.findByUser(req.user.username);
console.log(resp);
res.render('page', {
title: 'test page',
data: resp
});
})
或仅使用诺言
router.get('/page', ensureAuthenticated, function(req, res, next) {
somemodule.findByUser(req.user.username).then(function(resp) {
console.log(resp);
res.render('page', {
title: 'test page',
data: resp
});
}).catch(function(err) {
console.error(err);
})
})