#javascript #node.js #mongodb #mongoose #ecmascript-6
Вопрос:
В настоящее время я пытаюсь создать приложение с Node.js в качестве задней части.
После расспросов о том, какой метод API использовать для обновления, поскольку я изначально использовал post для всех, я начал использовать put и исправлять проблему, и исправление не обновляет поле версии в моей базе данных.
Что-то не так с тем, как я называю put и patch, или это просто так
router.patch('/update/:id', async (req, res) => {
// get category id
const id = req.params.id;
// check if category is found
try {
const category = await Category.findByIdAndUpdate(id, req.body);
// check if no category is found
if (!category) {
return res.status(400).send('Category not found');
}
// return category
return res.status(200).send(category);
}
catch (err) {
return res.status(400).send(err);
}
});
Ответ №1:
Попробуйте добавить это в свою схему категорий :
schema.pre('update', function( next ) {
this.update({}, { $inc: { __v: 1 } }, next );
});
Комментарии:
1. я понял, что .save() мог бы решить эту проблему, но это также прекрасно работает, тай, и извините за поздний повтор
Ответ №2:
__v
будет автоматически увеличен Мангустом, когда это необходимо. Он используется Мангустом внутренне, поэтому вам не нужно увеличивать его при обновлении документа. Это значение атомарно увеличивается всякий раз, когда изменение массива потенциально изменяет положение элементов любого массива. Он будет применен к операциям: $pull
, $pullAll
, $pop
, $set
всего массива.
Комментарии:
1. я понял проблему, мне нужно было сохранить после обновления .