sql >> Database >  >> NoSQL >> MongoDB

Node.js - Mongoose - Update geneste array met alle waarden in req.body

U zou de $ . moeten gebruiken positionele operator in uw $set . Om die eigenschappen dynamisch toe te wijzen, op basis van wat er in uw req.body . staat , moet u uw $set . opbouwen programmatisch.

Als u de naam wilt bijwerken, doet u het volgende:

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

Een manier om programmatisch de $set . op te bouwen met behulp van req.body is door het volgende te doen:

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

Zie dit antwoord voor meer details.



  1. rails + docker + sidekiq + Fout bij verbinden met Redis op 127.0.0.1:6379 (Errno::ECONNREFUSED)

  2. Hoe gebruik ik redis' `DUMP` en `RESTORE` (offline)?

  3. redis - Hashes gebruiken

  4. MongoDB C#:ID-serialisatie beste patroon