J'essaie d'ajouter du statut à une réponse sur la mise à jour réussie, mais je ne suis pas capable d'ajouter la propriété d'état à l'objet de formulaire JSON. Voici mon code et voici la réponse que je reçois, l'état de la notification manque p> Je ne suis pas sûr de ce que je suis manquant. p> p>
5 Réponses :
Essayez de changer Espérons que ce qui précède aide. p> res.Send (objform) code> à
res.Send (json.stringify (objform)) code>. Mon soupçon est que le modèle de mangouste a une fonction personnalisée TOJSON de sorte que lorsque vous le retournez, il transforme la réponse d'une manière ou d'une autre. p>
Non, j'avais essayé aussi. Cela change simplement l'objet à la chaîne et n'ajoute pas la propriété :(
Un piratage paresseux serait alors d'aller var objform = json.parse (json.stringify (formulaire)); code> ou objet.crété comme affiché ci-dessus. Afin que vous travailliez sur une copie.
essayer de .ToObject () code>
le FORMULAIRE:
Form.findOneAndUpdate(condition, req.body, {upsert:true}, function(err, form){ if (err) return res.send(500, { error: err }); var objForm = form.toObject(); objForm.status = "saved successfully"; return res.send(objForm); });
Il est précieux de comprendre (comme dans la réponse de @Jose Mato) que les résultats de la requête de mangouste ne sont pas extensibles!
Les résultats de la requête de la mangouste ne sont pas extensibles (des objets sont congelés ou scellés), vous ne pouvez donc pas ajouter plus de propriétés. Pour éviter cela, vous devez créer une copie de l'objet et le manipuler:
var objectForm = Object.create(form); objectForm.status = 'ok';
Dans ES6 Une autre possibilité est la suivante: const objetform = objet.Assign (formulaire, {Statut: 'OK'});
Créez simplement un conteneur.
array = {}; Model.findOneAndUpdate(condition, function(err, docs){ array = docs; array[0].someField ="Other"; });
Créer un objet vide et ajouter toutes les propriétés à elle: