Mongoose .findByIdAndUpdate не обновляет запись - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть экспресс-маршрут с использованием мангуста.Это .findByIdAndUpdate не работает.Я вижу, как появляется "removeId", второй console.log показывает правильную запись ... но он не обновился!Я что-то здесь не так делаю?

router.post('/highlight', jsonParser, (req, res) => {
    const { removeId, addId } = req.body; 
    console.log('removeId', removeId)
    Article
        .findByIdAndUpdate(removeId, {
            featured: false
        })
        .then(updatedArticle => {
            console.log('updated article', updatedArticle)

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Mongodb findOneAndUpdate метод имеет опцию, называемую returnNewDocument, которая согласно документации :

Необязательно .При значении true возвращает обновленный документ вместо исходного документа.По умолчанию false .

Mongoose переносит этот метод, но вызывает его сквозную опцию new согласно коду / документации :

outer.post('/highlight', jsonParser, (req, res) => {
  const { removeId, addId } = req.body; 
  console.log('removeId', removeId)
  return Article.findByIdAndUpdate(removeId, {featured: false}, {new: true})
    .then(updatedArticle =>
       console.log('updated article', updatedArticle)
    )   
})

Также не забывайте return ваш Article.findByIdAndUpdate в вашем посте.

0 голосов
/ 17 ноября 2018

Это странное значение по умолчанию, но findByIdAndUpdate не возвращает обновленную запись по умолчанию.Вы должны передать {new: true}, чтобы получить его.

router.post('/highlight', jsonParser, (req, res) => {
    const { removeId, addId } = req.body; 
    console.log('removeId', removeId)
    Article
        .findByIdAndUpdate(removeId,{new: true}, {
            featured: false
        })
        .then(updatedArticle => {
            console.log('updated article', updatedArticle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...