平均值:从mongodb获取总价值

平均值:从mongodb获取总价值,mongodb,mean-stack,Mongodb,Mean Stack,我是新来的,我使用mongoskin连接到mongodb..我试图获取数据库中存在的总值 function getTotal() { var deferred = Q.defer(); var dashboard = db.collection('dashboard'); db.collection('dashboard').find({"iscorrect" : ""}).count(), function (err, doc) { if (e

我是新来的,我使用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);
        });
}
下面的代码不返回任何值…获取总值的任何帮助都是有用的 因为方法是异步的,并且返回一个承诺,所以您可以使用回调函数将函数重新构造为

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;
}
或者既然回报了承诺,就回报它吧

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);
        });
}