У меня есть модель мангуста, которую я пытаюсь обновить прямо сейчас, используя метод .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
}
});
Что еще вам нужно @ NguyễnThanhTú, я предоставил нерабочий исходный код. Спасибо
Код выглядит нормально. Вы проверяли, что коллекция, которую вы обновляете, и коллекция, которую вы проверяете, совпадают. @Viper
Да они такие же. Я действительно не понимаю, почему это происходит @ViKiG
Добавьте Schema к приведенному выше коду. Кроме того, "xxxxx" в вашем коде - это эти переменные, и если они есть, то где вы записываете для них значения. Итак, вы должны добавить код, работающий вокруг вышеуказанного кода.
Добавил модель @ViKiG

В соответствии с вашим опубликованным кодом есть несколько проблем:
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), скорее всего, вызывает проблему в вашем случае.
предоставьте все детали, необходимые для воспроизведения проблемы mcve