MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js – Mongoose – Aktualisieren Sie das verschachtelte Array mit allen Werten in req.body

Sie müssten den $ verwenden Positionsoperator in Ihrem $set . Um diese Eigenschaften dynamisch zuzuweisen, basierend auf dem, was in Ihrem req.body steht , müssten Sie Ihr $set aufbauen programmgesteuert.

Wenn Sie den Namen aktualisieren möchten, gehen Sie wie folgt vor:

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);
    }
 }
);

Eine Möglichkeit, den $set programmgesteuert aufzubauen mit req.body indem Sie Folgendes tun:

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

Siehe dies Antworten für weitere Details.