Ho trovato il difetto. Era più concettuale:ho a che fare con chiamate asincrone e sto cercando di restituire il risultato da un'altra funzione e non so quando verrà eseguita. Quindi quello che succede è che faccio la richiesta che la query db venga eseguita e restituisco il risultato, che risulta essere nullo. Questo codice:
getNinjas : function(){
var res = null;
Ninja.find({},'name skill',function(err,docs){
if (err)
console.log('error occured in the database');
console.log(docs);
});
return res;
}
restituisce null, ma! console.log(docs) stampa sulla console tutti i valori dal database, cosa stavo cercando di fare. Ora devo apportare modifiche, molto probabilmente passare un callback che verrà eseguito alla ricezione dei risultati.
Con le modifiche il codice si presenta così:
getNinjas : function(res){
var twisted = function(res){
return function(err, data){
if (err){
console.log('error occured');
return;
}
res.send('My ninjas are:\n');
console.log(data);
}
}
Ninja.find({},'name skill',twisted(res));
}
Quindi in questo modo sono in grado di passare l'oggetto di risposta in modo da poter inviare il nome dei miei ninja :)