Проблема добавить значение в новое поле в документе mongoDB (nodeJs)

Рейтинг: 1Ответов: 0Опубликовано: 12.01.2023

Пытаюсь программно добавить поле в документу в 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 изменений так и нет.

Подскажите пожалуйста что я упустил.

Ответы

Ответов пока нет.