Comment exclure un champ particulier d'une collection en Mangoose?

j'ai une application NodeJS avec Mangouste ODM(Mangouste 3.3.1). Je veux récupérer tous les champs sauf un de ma collection.Par exemple: j'ai un produit de collection qui ont 6 champs,je veux sélectionner tous sauf un champ "Image" . J'ai utilisé "exclure" la méthode, mais a reçu l'erreur.. C'était mon code.

    var Query = models.Product.find();
    Query.exclude('title Image');

    if (req.params.id) {
        Query.where('_id', req.params.id);
    }


    Query.exec(function (err, product) {
        if (!err) {
            return res.send({ 'statusCode': 200, 'statusText': 'OK', 'data': product });
        } else {
            return res.send(500);
        }
    });

Mais cela renvoie erreur

Express
500 TypeError: Object #<Query> has no method 'exclude'.........

Aussi, j'ai essayé, var Query = models.Product.find().exclude('title','Image'); et var Query = models.Product.find({}).exclude('title','Image'); Mais faire la même erreur. Comment exclure un / deux champs particuliers d'une collection à Mongoose.

41
demandé sur Cœur 2013-01-28 13:40:49

3 réponses

Utiliser query.select pour le champ de sélection dans le courant (3.x) la Mangouste s'appuie.

préfixe un nom de champ que vous voulez exclure avec un -; donc dans ton cas:

Query.select('-Image');

mise à part rapide: en JavaScript, les variables commençant par une lettre majuscule doivent être réservées aux fonctions du constructeur. Envisager de renommer Queryquery dans votre code.

83
répondu JohnnyHK 2013-01-28 15:00:49

Je ne sais pas où vous avez lu à ce sujet .exclure de la fonction, parce que je ne peux pas le trouver dans les documents.

Mais vous pouvez exclure des champs en utilisant le deuxième paramètre de la méthode find.

Voici un exemple de la documentation officielle:

db.inventory.find( { type: 'food' }, { type:0 } )

cette opération renvoie tous les documents dont la valeur du champ type est food, mais n'inclut pas le champ type dans la sortie.

19
répondu Philipp 2013-01-28 09:48:34
Model.findOne({ _id: Your Id}, { password: 0, name: 0 }, function(err, user){
  // put your code
});

ce code a fonctionné dans mon projet. Merci!! avoir une belle journée.

13
répondu Danieldms 2015-11-03 14:14:42