正如之前所说,你的代码将无法正常工作事情是这样的。对此的解决方案将使用回调函数,但如果您认为它会将您带到“回调地狱”中,则可以搜索“Promisses”。
使用一个回调函数的一个可能的解决方案:
//DECLARE numberofDocs OUT OF FUNCTIONS
var numberofDocs;
userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
,如果你要搜索的基于查询的文档数,你可以这样做:
userModel.count({yourQueryGoesHere}, setNumberofDocuments);
setNumberofDocuments是separeted功能:
var setNumberofDocuments = function(err, count){
if(err) return handleError(err);
numberofDocs = count;
};
现在,您可以通过get功能:
function getNumberofDocs(){
return numberofDocs;
}
var number = getNumberofDocs();
此外,通过使用一个回调,例如使用异步函数一个同步内:
function calculateNumberOfDoc(someParameter, setNumberofDocuments){
userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
setNumberofDocuments(true);
}
希望它可以帮助别人。 :)
能告诉你一些代码。 – almypal
如果您使用的是ES 2016,则可以将呼叫包装在一个承诺内进行计数,并使用生成器进行调用。 – mikeyGlitz