Come detto prima, il codice non funziona così com'è. Una soluzione sarebbe utilizzare una funzione di callback, ma se pensi che ti porterebbe a un "callback hell", puoi cercare "Promisses".
Una possibile soluzione che utilizza una funzione di callback:
//DECLARE numberofDocs OUT OF FUNCTIONS
var numberofDocs;
userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
se si desidera cercare il numero di documenti basati su una query, si può fare questo:
userModel.count({yourQueryGoesHere}, setNumberofDocuments);
setNumberofDocuments è una funzione separeted :
var setNumberofDocuments = function(err, count){
if(err) return handleError(err);
numberofDocs = count;
};
Ora è possibile ottenere il numero di documenti ovunque con un get Funzione:
function getNumberofDocs(){
return numberofDocs;
}
var number = getNumberofDocs();
Inoltre, è possibile utilizzare questa funzione asincrona all'interno di uno sincrono utilizzando un callback, ad esempio:
function calculateNumberOfDoc(someParameter, setNumberofDocuments){
userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
setNumberofDocuments(true);
}
spero che possa aiutare gli altri. :)
Potrebbe mostrare un po 'di codice. – almypal
Se si utilizza ES 2016, è possibile racchiudere la chiamata per contare all'interno di una promessa e chiamarla con un generatore. – mikeyGlitz