Исправление и установка API не обновляет поле версии

#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. я понял проблему, мне нужно было сохранить после обновления .