Estoy tratando de crear una CRUD app con React . Quiero que un usuario que haya iniciado sesión pueda actualizar los detalles de su perro, sin embargo, cuando uso la función findOneAndUpdate si actualizo un campo determinado, eliminará el resto a menos que también se especifiquen.
Mis datos se almacenan como tales en un 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, }, }, Luego, estos datos se destruyen en mi archivo de enrutamiento y se integran en un objeto llamado "dogFields" y cuando uso el siguiente código para actualizar, simplemente elimina todos los campos a menos que los haya actualizado específicamente (aparte de dogsName que parece pegarse)
try { let dog = await Dog.findOneAndUpdate( { user: req.user.id }, { $set: dogFields }, { new: true } ); Supongamos que mi usuario tiene un perro configurado con el "dogsName" de "Archer", y voy a actualizar con "dogsBreed". Esto actualizará el campo "dogsBreed" y mantendrá el "dogsName" . Sin embargo, si luego voy a actualice el "hasChip" , eliminará "dogsBreed" .
Espero que esto tenga sentido y que haya proporcionado suficiente parte de mi código como ejemplo. Cualquier ayuda es apreciada. TIA.