MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Node.js - Mongoose - Mettre à jour le tableau imbriqué avec toutes les valeurs dans req.body

Vous auriez besoin d'utiliser le $ opérateur positionnel dans votre $set . Afin d'attribuer ces propriétés dynamiquement, en fonction de ce qui se trouve dans votre req.body , vous auriez besoin de construire votre $set par programmation.

Si vous souhaitez mettre à jour le nom, procédez comme suit :

Location.update(
  { 'competitors._id': req.params.competitorId },
  { $set:  { 'competitors.$.name': req.body.name }},
  (err, result) => {
    if (err) {
      res.status(500)
      .json({ error: 'Unable to update competitor.', });
    } else {
      res.status(200)
      .json(result);
    }
 }
);

Une façon de créer par programme le $set en utilisant req.body est en procédant comme suit :

let updateObj = {$set: {}};
for(var param in req.body) {
  updateObj.$set['competitors.$.'+param] = req.body[param];
 }

Voir ceci répondez pour plus de détails.