Array.push, похоже, не работает на MongoDB - PullRequest
1 голос
/ 17 октября 2019

Я хотел бы создать динамический вектор / массив в MongoDB. Идея проста: когда кто-то что-то отправляет, он должен обновить пользователя в моей базе данных в MongoDB. Я создал переменную для этого. Я уже проверил: правильный пользователь найден правильно.

Пожалуйста, найдите фрагмент моего кода.

User.findOne({ name })
          .then(user => {                
            user.something.push(something to push);
          })

Я установил значение по умолчанию, когда оно создается как пустое:

  something: {   
    type: [String],
    default: []
  }

Однако оно не сохраняется и не выдает ошибку. У кого-нибудь есть догадки о том, что может происходить за кулисами? Я новичок в MongoDB.

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Вы можете использовать findOneAndUpdate () с оператором $ push mongodb

User.findOneAndUpdate({name:name},{$push:{ something: 'new_data'}});
1 голос
/ 17 октября 2019

Вам необходимо обновить базу данных другим вызовом.

User.findOne({ name })
    .then(user => {                
        user.something.push(something to push);
        User.update({{ _id: user._id }})
    })

Или вы можете напрямую использовать

User.findOneAndUpdate({ name }, { something: ['new_data']});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...