我遇到了严重困难的情况。尝试了很多,但没有价值
我有一个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))
}
答案 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也需要一个参数;找到什么。
希望这有帮助!