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.

0 ответов

Другие вопросы по тегам