Mongoose findOneAndUpdate не обновляет несколько вложенных полей - PullRequest
0 голосов
/ 09 мая 2019

Проблема: Я пытаюсь обновить некоторые вложенные поля в MongoDb, используя findOneAndUpdate, но он обновляет только одно поле (дату) вместо всех полей, фактически, если я удаляю поле «Дата», оно обновляет ничего такого.

Схема

const UserSchema = new Schema({
    info : {
         geolocation: {
              latitude: String,
              longitude: String,
              date: Date
         }
    }
})

Мое заявление:

User.findOneAndUpdate (
    {"_id": id},
    {"$set": {
            'info.geolocation.latitude': 'test-lat',
            'info.geolocation.longitude': 'test-long',
            'info.geolocation.date': moment()
        }
    }).exec(function (err, doc) {
        if (err) {
            mongodb.desconectMDB();
            return res.status(500).send({
                message: 'error'
            });
        } else {
            console.log(doc);
            return  res.status(200).send({
                message: 'success'
            });
        }
    }
);

(я уже принял принятый ответ здесь Mongoose findOneAndUpdate Обновление нескольких полей , что похоже на мою проблему, но не работает в моем случае)

1 Ответ

0 голосов
/ 09 мая 2019

Он не обновляется в вашем bdd или console.log (doc) просто отображает неверную информацию?

Если console.log (doc) возвращает неверную информацию, просто добавьте следующие параметры ({new: true}) чтобы вернуть обновленный документ:

User.findOneAndUpdate (
{"_id": id},
{"$set": {
        'info.geolocation.latitude': 'test-lat',
        'info.geolocation.longitude': 'test-long',
        'info.geolocation.date': moment()
    }
},
{new: true}).exec(....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...