Znalazłem błąd. To było bardziej koncepcyjne:mam do czynienia z wywołaniami asynchronicznymi i próbuję zwrócić wynik z innej funkcji i nie wiem, kiedy zostanie wykonana. Więc to, co się dzieje, to wysyłam żądanie wykonania zapytania db i zwracam wynik, który okazuje się być null. Ten kod:
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;
}
zwraca wartość null, ale! console.log(docs) wypisuje do konsoli wszystkie wartości z bazy danych, co próbowałem zrobić. Teraz muszę wprowadzić zmiany, najprawdopodobniej przekazać wywołanie zwrotne, które zostanie wykonane po otrzymaniu wyników.
Po zmianach kod wygląda tak:
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));
}
W ten sposób mogę przekazać obiekt odpowiedzi, aby wysłać imię moich ninja :)