Проблема добавить значение в новое поле в документе mongoDB (nodeJs)
Пытаюсь программно добавить поле в документу в mongoDB. Перепробовал разные ответы с SO, mongoose не выдает ошибки, но в mongoDB изменений так и нет. Что я сделал:
Добавил нужное поле к Схеме:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
},
ava_url: {
type: String // вот оно новое поле
}
}, { timestamps: true });
const User = mongoose.model('User', userSchema);
module.exports = User;
Написал метод:
const change_ava = async (req, res) => {
const avaUrl = req.query.avaurl;
const user = req.user;
await User.findByIdAndUpdate(
{_id: user._id },
{$set: {ava_url: avaUrl } },
{ upsert: true }
)
/**
* Также пробовал это:
*await User.updateOne(
* {_id: user._id },
* {ava_url: avaUrl },
* { multi: true }
*)
*/
// здесь блок .then(), который возвращает успешно найденный документ,
// но изменений в нем так и нет.
}
Итог: метод отрабатывает, mongoose "без ошибок", но в mongoDB изменений так и нет.
В первом случае в ответе "Успешно", но объект возвращается без нового поля.
Во втором случае (c User.updateOne) ответ выглядит так:
{
"status": "ok",
"body": {
"acknowledged": true,
"modifiedCount": 1,
"upsertedId": null,
"upsertedCount": 0,
"matchedCount": 1
}
}
В обоих случаях в mongoDB изменений так и нет.
Подскажите пожалуйста что я упустил.
Источник: Stack Overflow на русском