Actualizar controlador
exports.UpdatePanelMembers = (req, res) => { const { panelId } = req.params; if (panelId) { Panel.findOneAndUpdate( { _id: panelId }, { panelMembers: { member1: { memberId: req.body.panelMembers.member1.memberId, fullName: req.body.panelMembers.member1.fullName, username: req.body.panelMembers.member1.username, }, member2: { memberId: req.body.panelMembers.member2.memberId, fullName: req.body.panelMembers.member2.fullName, username: req.body.panelMembers.member2.username, }, member3: { memberId: req.body.panelMembers.member3.memberId, fullName: req.body.panelMembers.member3.fullName, username: req.body.panelMembers.member3.username, }, }, } ).exec((error, result) => { if (error) return res.status(400).json({ error }); if (result) { res.status(202).json({ result }); } }); } };En este código, si actualizo solo los detalles del miembro 1, se borrarán otros datos. Así que quiero actualizar solo datos relevantes como este cartero JSON.
Código JSON del cartero
{ "panelMembers": { "member1": { "username":"john.j", "fullName":"John Jade", "memberId":"member123" } } }Solo tiene que actualizar el miembro 1 en el objeto panelMembers. Entonces, para eso, envíe el objeto miembro1 en la solicitud del cartero y haga su consulta como: -
Panel.findOneAndUpdate({ _id: panelId },{'panelMembers.$.member1': member1})Esto solo actualizará el objeto miembro1. Otros objetos no se verán afectados ni borrados.