如何将值从mongoose findOne方法返回到调用函数

时间:2016-06-13 15:40:46

标签: javascript node.js mongodb mongoose

我遇到了严重困难的情况。尝试了很多,但没有价值 我有一个nodejs应用程序,我正在从mongodb读取数据 我有一个main方法,从我调用fetchMongo()方法和所有其他函数。我需要fetchMongo函数将结果返回给Main。 main方法有一个对象obj,它将传递给所有函数 我尝试下面的代码:它不起作用。
console.log内的fetchMongo()工作正常,但fetchMongo()未将值返回给Main 请帮忙。

function fetchMongo(obj)
{
    var defer = Q.defer();
    serviceHealthConfig.findOne({}, '', { sort: {'_id' : -1} }, function(err, nodes){
        var struct={}
        if(err) 
            console.log(err);
        //console.log(nodes);
        obj = nodes;
        return obj;
    });
    defer.resolve(obj);
    return defer.promise;
}

function main(){
    var obj = { };
    var nodesObject = fetchMongo(obj)
                    .then(methOne(obj))
                    .then(methTwo(obj))
                    .then(methThree(obj))
}

1 个答案:

答案 0 :(得分:0)

你的defer.resolve应该在find one回调中调用。如下所示:

    function fetchMongo(obj)
{
    var defer = Q.defer();
    serviceHealthConfig.findOne({}, '', { sort: {'_id' : -1} }, function(err, nodes){
        var struct={}
        if(err) 
            console.log(err);
        //console.log(nodes);
        obj = nodes;
        defer.resolve(obj);
    });
    return defer.promise;
}

此外,findOne也需要一个参数;找到什么。

希望这有帮助!