findOneAndUpdate - Как мне просто обновить одно поле, не изменяя остальные?
Я пытаюсь создать
CRUD app
с участием
React
. Я хочу, чтобы вошедший в систему пользователь мог обновлять сведения о своей собаке, однако, когда я использую
findOneAndUpdate
функция, если я обновлю определенное поле, она удалит остальные, если они также не указаны.
Мои данные хранятся как таковые в
Schema
:
const DogSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
},
dogsName: {
type: String,
required: true,
},
// Dogs details
dogsDetails: {
dogsBreed: {
type: String,
},
microchip: {
hasChip: {
type: Boolean,
},
microchipNumber: {
type: String,
},
},
Затем эти данные разрушаются в моем файле маршрутизации и встраиваются в объект с именем
"dogFields"
и когда я использую следующий код для обновления, он просто удаляет все поля, если я не обновлял их специально (кроме
dogsName
который, кажется, прилипает)
try {
let dog = await Dog.findOneAndUpdate(
{ user: req.user.id },
{ $set: dogFields },
{ new: true }
);
Предположим, что у моего пользователя есть собака, настроенная с помощью "Archer", и я перехожу к обновлению с помощью "dogsBreed". Это обновит поле и сохранит
"dogsName"
. Однако, если я перейду к обновлению
"hasChip"
, он удалит
"dogsBreed"
.
Я надеюсь, что это имеет смысл, и что я привел достаточно своего кода в качестве примера. Любая помощь приветствуется. TIA.