Я хочу заменить документ в одной из моих моделей (конфигураций), и для этого я использую метод findOneAndReplace . Однако mon goose заменяет документ пустым.
Я вызываю метод как:
let updateData = { _id: '5ecba01dbac0c68120535f40', data: 'newData' };
Configuration.findOneAndReplace({ uuid : req.params.uid }, updateData, (err, conf) => {
if ( err ) {
sendErrorResponse ( res, err );
} else {
res.json ( {
status : 1,
data : conf
} );
}
} );
В журналах я вижу это:
configurations.findOneAndReplace({ uuid: 'default' }, {}, { _id: '5ecba01dbac0c68120535f40', data: 'newData' }, projection: {}})
Согласно документации, второй параметр должен быть документом замены, но mon goose передает документ замены как 3-й параметр, а второй параметр пуст. Я думаю, что это причина того, что он устанавливает его пустым в db.
Теперь вместо этого, если я использую findOneAndUpdate , он работает полностью нормально. Я получаю в журналах следующее:
configurations.findOneAndUpdate({ uuid: 'default' }, { '$set': { _id: '5ecba01dbac0c68120535f40', data: 'newData' }}, { upsert: false, projection: {}, returnOriginal: true })
Но я хочу заменить документ, а не обновлять его. Есть ли что-то, чего мне не хватает, или это, вероятно, ошибка в понедельник goose?