Почему findByIdAndUpdate не обновляет документ? - PullRequest
0 голосов
/ 06 мая 2020

У меня проблема со следующей функцией

export function updateLine(req: Request, res: Response) {
    if (!req.params.id || !req.body) return res.status(400).send({ message: 'Client has not sent params' });
    Line.findByIdAndUpdate(req.params.id, req.body, async (err, lineUpdated) => {
        console.log("req.params.id", req.params.id)
        console.log("lineUpdated", lineUpdated)
        console.log("req.body", req.body)
        if (err) return res.status(409).send({ message: 'Internal error, probably error with params' });
        if (!lineUpdated) return res.status(404).send({ message: 'Document not found' });
        if (req.params.id !== lineUpdated.id) await Key.updateMany({ 'line': req.params.id }, { 'line': lineUpdated._id }).exec(err => {
            if (err) return res.status(500).send({ message: 'Key Internal Server Error' });
        });
        return res.status(200).send({ data: lineUpdated });
    });
}

Я пытаюсь просто обновить документ req.params.id тем, что содержит req.body

Ответы на показаны следующие console.log ():

req.params.id ACCSEH
lineUpdated {
  _id: 'ACCSEH',
  name: 'Accesorios (SEH)',
  started: 2020-04-21T20:25:10.395Z,
  __v: 0
}
req.body { id: 'ACCSEJ', name: 'Accesorios (SEH)' }

Я делаю что-то не так?

Я уже знаю, что lineUpdated вернет мне функцию до изменения. Я имею в виду, что когда я делаю запрос, чтобы увидеть изменения, ничего не изменилось

введите здесь описание изображения

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Ссылаясь на документацию :

Имя поля _id зарезервировано для использования в качестве первичного ключа; его значение должно быть уникальным в коллекции, быть неизменным и может относиться к любому типу, кроме массива.

Вы не можете изменить поле _id после его вставки в коллекцию

0 голосов
/ 06 мая 2020

При поиске и обновлении по идентификатору вы не можете присвоить ему идентификатор в объекте - вам нужно дать ему объект, который имеет некоторую комбинацию других элементов (имя, начало, _v).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...