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.