Я создаю макет restful API для лучшего изучения Я использую MongoDB и node.js, а для тестирования я использую почтальон.
У меня есть маршрутизатор, который отправляет запрос на обновление router.patch
. В моей БД у меня есть name
(строка), price
(число) и imageProduct
(строка - я держу путь к изображению).
Я могу обновить свои name
и price
объекты, используя raw-format на почтальоне, но я не могу обновить его с помощью form-data . Как я понимаю, в raw-form я обновляю данные, используя формат массива. Есть ли способ сделать это в form-data ? Цель использования form-data , я хочу загрузить новое изображение, потому что я могу обновить путь к productImage
, но я не могу загрузить общедоступную папку нового изображения. Как я могу справиться с этим?
Пример обновления данных в необработанном виде
[ {"propName": "name"}, {"value": "test"}]
router.patch
router.patch('/:productId', checkAuth, (req, res, next) => {
const id = req.params.productId;
const updateOps = {};
for (const ops of req.body) {
updateOps[ops.propName] = ops.value;
}
Product.updateMany({_id: id}, {$set: updateOps})
.exec()
.then(result => {
res.status(200).json({
message: 'Product Updated',
request: {
type: 'GET',
url: 'http://localhost:3000/products/' + id
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({
err: err
});
});
});