javascript mongooose Защита целостности данных в mongodb во время обновления - PullRequest
0 голосов
/ 17 июня 2019

Как я могу защитить данные, которые я не обновляю, когда я делаю обновление.Я заметил, что когда у меня есть такая схема mongodb

var SCHEMA1 = mongoose.Schema({
    full_name: String,
    other_fields : String//etc
    schema2_foreign_field:{
        type: Schema.Type.ObjectId,
        ref: 'schema2'
    },
    array_field:[{
        field1: String,
        field2: String
    }]
})

, запустите такую ​​операцию обновления

modelDetail.update({
    full_name: 'Bryant Smith'
},
{$set:{
    other_fields: 'Some string',
    schema2_foreign_field:'510a073b3b6 - idstring'
}},
{safe:true, upsert:true},
function(){

})

Это обновление уничтожает все, что не было обновлено.Как я могу только обновить поля, которые я хочу обновить, и оставить остальные поля без изменений

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

На самом деле ваша проблема из-за флага safe.

Я не уверен, почему такое поведение происходит, но я бы рекомендовал просто избавиться от него.Это остаток от очень старых версий mongodb, которые по умолчанию делали неподтвержденные записи.делая эту опцию не очень полезной в наше время.

0 голосов
/ 17 июня 2019

Пожалуйста, проверьте ссылку ниже, которая может помочь вам в этом контексте.

https://docs.mongodb.com/manual/reference/operator/update/set/

и попробуйте снова, установив

upsert ложь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...