MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Node, Mongoose :Supprimer l'élément json du résultat de la requête avec delete

Je pense que ce que vous appelez JSON est en fait un objet de document Mongoose étant donné les balises que vous avez ajoutées à votre question. Étant donné que cet objet est attaché à son "schéma", vous pouvez y avoir des règles telles qu'un champ "requis" ou autres qui interfèrent avec l'opération que vous essayez de faire.

Pour récupérer une forme brute de l'Objet, utilisez simplement le .toObject() méthode sur le résultat du document :

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

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

    console.log( raw );

});

Bien sûr, vous pouvez toujours simplement omettre le champ d'être renvoyé dans le résultat de la requête avec le formulaire de base fourni par .select() :

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

    console.log( doc );

});

L'un ou l'autre formulaire supprimerait ce champ particulier de la réponse, mais si vous souhaitez éventuellement plus de contrôle sur le résultat que ce qui peut être fourni par la projection de champ de .select() puis utilisez le .toObject() former et manipuler comme un simple objet JavaScript.