#javascript #routes #put #insomnia
Вопрос:
Вот код—
router.put('/:id', (req, res) => {
// update product data
Product.update(req.body, {
where: {
id: req.params.id,
},
})
.then((product) => {
// find all associated tags from ProductTag
return ProductTag.findAll({ where: { product_id: req.params.id } });
})
.then((productTags) => {
// get list of current tag_ids
const productTagIds = productTags.map(({ tag_id }) => tag_id);
// create filtered list of new tag_ids
const newProductTags = req.body.tagIds
.filter((tag_id) => !productTagIds.includes(tag_id))
.map((tag_id) => {
return {
product_id: req.params.id,
tag_id,
};
});
// figure out which ones to remove
const productTagsToRemove = productTags
.filter(({ tag_id }) => !req.body.tagIds.includes(tag_id))
.map(({ id }) => id);
// run both actions
return Promise.all([
ProductTag.destroy({ where: { id: productTagsToRemove } }),
ProductTag.bulkCreate(newProductTags),
]);
})
.then((updatedProductTags) => res.json(updatedProductTags))
.catch((err) => {
// console.log(err);
res.status(400).json(err);
});
});
введите описание изображения здесь
это объект json, который я пытался использовать
{
"id": 1,
"tag_name": "hat",
"products": [
{
"id": 1,
"product_name": "Branded Baseball Hat",
"price": 22.99,
"stock": 12,
"category_id": 4,
"product_tag": {
"id": 5,
"product_id": 1,
"tag_id": 1
}
}
]
}
Я не уверен, совершаю ли я ошибку в бессоннице, когда пытаюсь протестировать, или это в моем реальном коде Visual studio. Все мои другие тесты маршрута работают. (ПОЛУЧИТЬ, УДАЛИТЬ И ОПУБЛИКОВАТЬ)
Комментарии:
1. Раскомментируйте
console.log(err)
в своем.catch()
заявлении, а затем опубликуйте сообщение об ошибке, которое выводится на консоль узла, было бы очень полезно2. Вы уверены, что маршрут правильный?
3. Итак, у вас установлен префикс, так как «продукт» не находится в пути put?