Как было сказано ранее, вы код не будет работать так, как она есть. Решение этой проблемы будет использовать функцию обратного вызова, но если вы считаете, что она перенесет вас в «Callback hell», вы можете найти «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