#javascript #arrays #json #foreach #axios
Вопрос:
Вот мой конечный маршрут, есть ли что-то очевидное, чего мне не хватает, когда дело доходит до возвращаемых данных? У меня больше опыта в манипулировании массивами, поэтому при работе с объектами вместо того, чтобы помещать их в массив после возврата данных, как я могу реструктурировать это, чтобы вернуть массив?
router.get('/caseDetail/:caseName', (req,res) => {
db.caseDetail.findAll({
include : [db.Part,db.Fault,db.Disposition,db.Contact,db.Site],
where : {
caseName:{
[Op.like]: [req.params.caseName]}
}
}).then((response) => {
console.log(response);
res.json(response)
}).catch((error) => {
console.log(error);
})
})
В настоящее время я возвращаю объект, а не массив объектов, который я ищу,
Комментарии:
1. Вам нужно будет показать форму возвращаемых данных и ожидаемый рефакторинг.
2. вы на самом деле ничего не возвращаете в данный момент 😉
return res.json(response)
3. Можно
findAll
ли настроить возврат массива? Если есть более одного результата, передается ли массив клиенту? Каким вы хотите видеть содержимое выходного массива?4. Если вы используете Sequelize, это выглядит так, как будто
findAll
возвращает массив. Попробуйте использоватьconsole.log(JSON.stringify(response))
в своем маршруте вместо того, чтобы простоconsole.log(response)
подтвердить это. Кроме того, я отмечаю, что в вашем ответе (клиент или сервер, неясно) есть все это вdata
поле. Есть ли у вас промежуточное программное обеспечение где-нибудь в стеке Express, которое могло бы переформатировать вывод и, возможно, уменьшить массив до одного значения?5. Я наконец понял, в чем дело, вы заставили меня задуматься о бэкэнде, поэтому я сравнивал его со старыми API, которые я написал, затем я заметил, что на переднем конце маршрута, по которому я пытался попасть, была синтаксическая ошибка, я изменил
let items = await axios.get(`/api/caseDetail/:${caseName}`);
let items = await axios.get(`/api/caseDetail/${caseName}`);
, и все встало на свои места. Очень рад этому, иногда помогает просто поговорить об этом с кем-то, и я очень благодарен за ваши отзывы.
Ответ №1:
вы забываете использовать return
в res.json(response)
пробовать return res.json(response)
Комментарии:
1.
return
здесь нет необходимости, вызов одного из методовres
(из которыхjson
один) отправит результат.
Ответ №2:
Проблема здесь заключалась в синтаксической ошибке на моем интерфейсном маршруте После изменения
let items = await axios.get(`/api/caseDetail/:${caseName}`);
Для
let items = await axios.get(`/api/caseDetail/${caseName}`);
Все встало на свои места, и мое использование [Op. like] сработало как заклинание. Спасибо всем вам за помощь!