sql >> Database teknologi >  >> NoSQL >> MongoDB

Node.js - Mongoose - Opdater indlejret array med alle værdier i req.body

Du skal bruge $ positionsoperator i dit $set . For at tildele disse egenskaber dynamisk, baseret på hvad der er i din req.body , skal du opbygge dit $set programmatisk.

Hvis du vil opdatere navnet, skal du gøre følgende:

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

En måde du kan programmere opbygge $set på ved hjælp af req.body er ved at gøre følgende:

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

Se dette svar for flere detaljer.



  1. MongoDB $objectToArray

  2. Hvordan kontrollerer man, om et dokument blev indsat eller opdateret, når man bruger findOneAndUpdate?

  3. Så... denne NoSQL-ting

  4. Adgang til meteorproduktionsdatabase i 2016