Mongoose findOneAndUpdate не сохраняет

У меня есть модель мангуста, которую я пытаюсь обновить прямо сейчас, используя метод .findOneAndUpdate со следующим кодом:

MyModel.findOneAndUpdate({ _id: "xxxxx", userId: "xxxxx" }, { $set: { completion:"xxxx", date: "xxxxx" } }, { new: true }, function(err, doc) {
  if (err) {
      return res.json({success: false, message: err.message});
  }
      res.json({success: true, message: 'success'});
});

Когда я регистрирую doc, он возвращает обновленную модель, но модель не сохраняется в базе данных. Приветствуются любые мысли по этому поводу.

Код модели:

var MyModel = new Schema({
 name: {
   type: String,
   required: true
 },
 date: {
   type: Date,
   required: true
 },
 userId: {
   type: String,
   required: true
 },
 completion: {
   type: Boolean,
   required: true
 }
});

предоставьте все детали, необходимые для воспроизведения проблемы mcve

You Nguyen 09.10.2018 05:53

Что еще вам нужно @ NguyễnThanhTú, я предоставил нерабочий исходный код. Спасибо

Viper 09.10.2018 06:06

Код выглядит нормально. Вы проверяли, что коллекция, которую вы обновляете, и коллекция, которую вы проверяете, совпадают. @Viper

ViKiG 09.10.2018 08:03

Да они такие же. Я действительно не понимаю, почему это происходит @ViKiG

Viper 09.10.2018 16:29

Добавьте Schema к приведенному выше коду. Кроме того, "xxxxx" в вашем коде - это эти переменные, и если они есть, то где вы записываете для них значения. Итак, вы должны добавить код, работающий вокруг вышеуказанного кода.

ViKiG 10.10.2018 10:49

Добавил модель @ViKiG

Viper 10.10.2018 17:13
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
6
794
1

Ответы 1

В соответствии с вашим опубликованным кодом есть несколько проблем:

1) MyModel - это объект Schema, вам нужно будет создать такой объект Model -

    var model = mongoose.Model('modelName', MyModel); // where MyModel is a Schema object

Затем, используя указанный выше объект model, вы можете запустить свой findOneAndUpdate, как в вашем коде (например, model.findOneAndUpdate).

2) Во-вторых, в схеме MyModel вы не указали название коллекции. Вы можете поместить его в объект параметров, который идет после аргумента объекта схемы. Итак, вы должны поставить:

    var MyModel = new Schema({schema object...}, {collection: 'mongodbCollectionName'});

Если вы не укажете вариант выше, mongoose создаст коллекцию по умолчанию, используя имя model.

Я считаю, что если (1) там нет, то (2), скорее всего, вызывает проблему в вашем случае.

Другие вопросы по теме