#node.js #mongodb #sails.js #node-mongodb-native
#node.js #mongodb #sails.js #узел-mongodb-собственный
Вопрос:
Я пытаюсь передать данные результатов из функции запроса в объект. строка console.log(results) возвращает «неопределенный» результат. Что мне делать?
module.exports = {
show: function(req, res) {
var results;
User.native(function(err, User) {
if(err) {
console.log("There is no exist a User by _id");
}
User.findOne({'_id' : req.param('id')},
function(err, user) {
results = user;
});
});
console.log(results);
return res.view({ stuff : results });
}
};
Ответ №1:
У вас проблема с асинхронностью, обратный вызов из findOne не обязательно выполняется в соответствии с остальной частью кода, поэтому вы переходите к console.log(results)
results = user
вызову before . Вы хотели бы изменить его на что-то вроде этого:
show: function(req, res) {
var results;
User.native(function(err, User) {
if(err) {
console.log("There is no exist a User by _id");
}
User.findOne({'_id' : req.param('id')},
function(err, user) {
results = user;
console.log(results);
// Send response or make a callback here
});
});
}
Комментарии:
1. Спасибо за вашу помощь. Потому что я не могу использовать «результаты» из собственной функции.
2. если вам действительно нужно выполнять работу последовательно, вы также можете рассмотреть возможность использования библиотеки async: github.com/caolan/async