2017-09-16 2 views
1

Je suis en train de travailler avec un mongoDB en utilisant mongoose, voici un élément exemple de la db:Mongoose findOne ne fonctionne pas pour une requête particulière, mais travaillant pour d'autres

{ 
    "_id": { 
    "$oid": "59bc026679f3a71ed02e4812" 
    }, 
    "name": "Le Ruban blanc", 
    "customID": 80074, 
    "description": "Un village protestant de l'Allemagne du Nord à la veille de la Première Guerre mondiale (1913/1914). L'histoire d'enfants et d'adolescents d'une chorale dirigée par l'instituteur du village et celle de leurs familles : le baron, le régisseur du domaine, le pasteur, le médecin, la sage-femme, les paysans... D'étranges accidents surviennent et prennent peu à peu le caractère d'un rituel punitif. Qui se cache derrière tout cela ?", 
    "poster": "http://sokrostream.com/wp-content/uploads/2013/09/1367017617_face.jpg", 
    "genres": [ 
    "Drame" 
    ], 
    "country": "Français", 
    "releaseYear": 2009, 
    "quality": "DVDRip" 
} 

J'utilise mangouste pour mon requêtes, mais la requête suivante renvoie null.

collection.findOneAndUpdate({ "customID": 80074 }, { $inc: { "views" : 1 } }, cb) 

S'il vous plaît noter que lorsque j'utilise autre chose que customID, cela fonctionne. Par exemple, la requête suivante fonctionne.

collection.findOneAndUpdate({ "name": "Le Ruban blanc" }, { $inc: { "views" : 1 } }, cb) 

J'espère que vous pouvez voir le problème, je viens de commencer à utiliser il y a mongoDB & mongoose quelques jours si l'erreur est peut-être quelque chose de très basique. Toute aide est très appréciée!

Comme demandé, voici le schéma:

new mongoose.Schema({ 
name: {type: String, required: true}, 
customID: {type: String, required: true, unique: true}, 
description: {type: String, default: 'No description available'}, 
poster: {type: String, default: 'default'}, 
genres: {type: [String], default: ['Unknown']}, 
country: {type: String, default: 'Unknown'}, 
releaseYear: {type: Number, default: 2000}, 
quality: {type: String, default: 'HD-720p'}); 

et voici le code complet mangouste:

collection.findOneAndUpdate({"customID": 80074}, 
    { $inc: { "views" : 1 } }, 
    {projection: projection}, 
    (err, element) => { 
     if (err) return res.status(400).send(err); 
     res.status(200).send(element); 
    }); 
+0

Pouvez-vous montrer le code mangouste –

+0

@AzoulayJason voulez-vous dire le schéma? si c'est le cas, c'est à peu près la même chose que l'exemple d'objet. En ce qui concerne le code qui appelle la db ici est: collection.findOneAndUpdate ({ "customID": 80074}, {$ inc: { "vues": 1}}, { projection: projection}, (err , élément) => { if (err) return res.status (400) .send (erreur); res.status (200) .send (élément); }); –

+0

Je suppose qu'il demande une définition de schéma de mangouste, Veuillez ajouter votre définition de mangouste pour la collection ci-dessus. comme ceci: http://mongoosejs.com/docs/guide.html – RaghavGarg

Répondre

1

Dans votre schéma que vous avez customID: {type: String}. Alors que vous essayez de trouver un integer dedans.

Veuillez modifier le type de customID à Number comme customID: {type: Number}.

La définition correcte de votre schéma est très importante. Read more about schema type