正如之前所說,你的代碼將無法正常工作事情是這樣的。對此的解決方案將使用回調函數,但如果您認爲它會將您帶到「回調地獄」中,則可以搜索「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