2015-05-06 2 views
3

У меня есть метод node.js, который использует mongoose для возврата некоторых данных, проблема в том, что, поскольку я использую обратный вызов внутри моего метода, ничего не возвращается клиентуКак вернуть обратный вызов Node.js

мой код:

var getApps = function(searchParam){ 
    var appsInCategory = Model.find({ categories: searchParam}); 
    appsInCategory.exec(function (err, apps) { 
     return apps; 
    }); 
} 

Если я пытаюсь сделать это синхронно с помощью объекта JSON, например, он будет работать:

var getApps = function(searchParam){ 
    var appsInCategory = JSONOBJECT; 
    return appsInCategory 
} 

что я могу сделать?

ответ

5

Вы не можете вернуться из обратного вызова - см. this canonical about the fundamental problem. Поскольку вы работаете с Mongoose вы можете вернуть обещание для него, хотя:

var getApps = function(searchParam){ 
    var appsInCategory = Model.find({ categories: searchParam}); 
    return appsInCategory.exec().then(function (apps) { 
     return apps; // can drop the `then` here 
    }); 
} 

Который позволит вам сделать:

getApps().then(function(result){ 
    // handle result here 
});