Я пытаюсь получить эту функцию для запроса моего db и вернуть несколько деталей для выбранного элемента. Он находит элементы в порядке, но, похоже, возвращается неопределенно.Почему моя функция выводит массив, возвращаемый undefined?
var recipefunc = function(name) {
Item.find({name: name}, function(err, foundItem) {
if(err) {
console.log(err);
} else {
var image = foundItem[0].image;
var link = foundItem[0]._id;
var output = [image, link];
console.log("function output:");
console.log(output);
return [image, link];
}
});
};
Консоль.log выше выводит правильную информацию в массиве, но не делает ее более чем такой.
Я пытаюсь добавить его в этот объект массивов, который уже является частью более крупного объекта.
var recipe = {
field1: recipefunc(req.body.field1),
field2: req.body.field2,
field3: req.body.field3,
field4: req.body.field4,
field5: req.body.field5,
field6: req.body.field6,
field7: req.body.field7,
field8: req.body.field8,
field9: req.body.field9,
};
Это код, который я получить вернулся ко мне, я только сосредоточиться на field1 на данный момент, я не предоставили данные о других.
recipe:
{ field9: '',
field8: '',
field7: '',
field6: '',
field5: '',
field4: '',
field3: '',
field2: '' },
Потому что он ничего не возвращает? Этот оператор 'return' находится в обратном вызове' find'. – Bergi
@ Bergi, где я должен его переместить? Все еще учиться, извините, если это глупый вопрос. –
Учитывая, что запрос базы данных асинхронен, на самом деле невозможно сразу вернуть результат. См. Канонический вопрос. – Bergi