意思:从mongodb获得总价值

时间:2016-05-26 08:47:04

标签: mongodb mean-stack

我是新手意味着堆栈和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);
        });
}

以下代码不返回任何值...获取总值的任何帮助都很有帮助 enter image description here

1 个答案:

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