Question

Je reçois cet étrange comportement.Voici la chose:- Je faire une requête de base de données et que vous voulez supprimer un élément de l'json renvoyé par la requête.Donc, cela ne semble pas fonctionner (c'est à direl'élément n'est pas supprimé),

var user=json;
delete user.element;

bien que cela fonctionne

var user={element:json.element,blement:'stuff'}
delete user.element;
Était-ce utile?

La solution

Je pense que vous faites référence à JSON est en fait une Mangouste objet d'un document donné les balises que vous avez ajouté à votre question.Depuis que l'objet est attaché à son "schéma", vous pouvez avoir des règles il y a comme une "obligation" de terrain ou telle qui interfèrent avec l'opération que vous tentez de faire.

Afin d'obtenir une forme brute de l'Objet, il suffit d'utiliser la .toObject() méthode sur le document résultat:

Model.findOne({ _id: id}, function(err,doc) {

    var raw = doc.toObject();
    delete raw.element;

    console.log( raw );

});

Bien sûr, vous pouvez toujours juste omettre le domaine de retourner dans le résultat de la requête avec la forme de base fournis par .select():

Model.findOne({ _id: id}, '-element', function(err,doc) {

    console.log( doc );

});

Soit la forme serait de supprimer ce champ particulier de la réponse, mais si vous voulez plus de contrôle sur le résultat que ce qui peut être fourni par le domaine de la projection du .select() ensuite, utilisez la .toObject() forme et manipuler comme un simple objet JavaScript.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top