我是新手意味着堆栈和Im使用mongoskin连接到mongodb ..我试图获得数据库中的总值
function getTotal() {
var deferred = Q.defer();
var dashboard = db.collection('dashboard');
db.collection('dashboard').find({"iscorrect" : ""}).count(),
function (err, doc) {
if (err){
deferred.reject(err);
} else{
deferred.resolve();
}
};
return deferred.promise;
}
我的主控制器有
function gettotal(req, res) {
userService.getTotal()
.then(function () {
res.sendStatus(200);
})
.catch(function (err) {
res.status(400).send(err);
});
}
答案 0 :(得分:1)
因为 count()
方法是异步的并且返回了一个promise,所以您可以使用回调函数重构您的函数
function getTotal() {
var deferred = Q.defer();
db.collection('dashboard').count({"iscorrect" : ""}, function (err, result) {
if (err){
deferred.reject(err);
} else{
deferred.resolve(result);
}
});
return deferred.promise;
}
或 count()
返回Promise,只需返回
function getTotal() {
// just return a Promise
return db.collection('dashboard').count({"iscorrect" : ""});
}
并在您的控制器中:
function gettotal(req, res) {
userService.getTotal()
.then(function (count) {
res.status(200).json({ 'count': count });
})
.catch(function (err) {
res.status(400).send(err);
});
}