7
votes

Impossible d'ajouter une propriété à l'objet JSON

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 xxx

et voici la réponse que je reçois, l'état de la notification manque xxx

Je ne suis pas sûr de ce que je suis manquant.


0 commentaires

5 Réponses :


0
votes

Essayez de changer res.Send (objform) à res.Send (json.stringify (objform)) . 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.

Espérons que ce qui précède aide.


2 commentaires

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)); ou objet.crété comme affiché ci-dessus. Afin que vous travailliez sur une copie.



10
votes

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

});


1 commentaires

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!



8
votes

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';


1 commentaires

Dans ES6 Une autre possibilité est la suivante: const objetform = objet.Assign (formulaire, {Statut: 'OK'});



-1
votes

Créez simplement un conteneur.

array = {};
Model.findOneAndUpdate(condition, function(err, docs){
    array = docs;
    array[0].someField ="Other";
});


0 commentaires

0
votes

Créer un objet vide et ajouter toutes les propriétés à elle: xxx


0 commentaires