Našel jsem chybu. Bylo to spíše koncepční:Zabývám se asynchronními voláními a snažím se vrátit výsledek z jiné funkce a nevím, kdy se provede. Stane se tedy, že požádám o provedení dotazu db a vrátím výsledek, který se ukáže jako null. Tento kód:
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;
}
vrátí hodnotu null, ale! console.log(docs) vytiskne do konzole všechny hodnoty z databáze, o co jsem se snažil. Nyní musím provést změny, pravděpodobně předat zpětné volání, které bude provedeno po obdržení výsledků.
Se změnami vypadá kód takto:
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));
}
Takže takto jsem schopen předat objekt odpovědi, abych mohl poslat jména svých ninjů :)