Tôi đã tìm ra lỗi. Đó là một khái niệm nhiều hơn:Tôi đang xử lý các cuộc gọi không đồng bộ và đang cố gắng trả về kết quả từ một hàm khác và không biết khi nào nó sẽ thực thi. Vì vậy, những gì sẽ xảy ra là tôi thực hiện yêu cầu rằng truy vấn db được thực thi và trả về kết quả, kết quả hóa ra là null. Mã này:
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;
}
trả về null, nhưng! console.log (docs) in ra bảng điều khiển tất cả các giá trị từ cơ sở dữ liệu, những gì tôi đang cố gắng thực hiện. Bây giờ tôi cần thực hiện các thay đổi, rất có thể sẽ chuyển một lệnh gọi lại sẽ được thực thi khi nhận được kết quả.
Với những thay đổi, mã trông như thế này:
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));
}
Vì vậy, như thế này, tôi có thể chuyển đối tượng phản hồi để tôi có thể gửi tên của các ninja của mình :)