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.
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 Query
query
dans votre code.
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.
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.