2016-09-11 1 views
1

J'essaie d'extraire des données d'un MongoDB avec un nœud. Voici mon code:Recherche de données avec la fonction NodeJS # find() à partir d'un MongoDB

var MongoClient = require('mongodb').MongoClient; 
var ObjectId = require('mongodb').ObjectId; 
var url = 'mongodb://localhost:27017/test'; 

module.exports.get = function (req, res) { 
    //console.log(req.params.id) 
    //prints 1 
    var query = {}; 
    query['id'] = req.params.id; 
    MongoClient.connect(url, function (err, db) { 
     db.collection('events') 
      .find(query) 
      .limit(1) 
      .next(function (err, event) { 
       if (err) { 
        res.status(500).send('Could not bring the resource requested!'); 
       } 
       if (event) { 
        res.setHeader('Content-Type', 'application/json'); 
        res.send(event); 
       } 
       else { 
        res.status(404).send('Can\'t find the resource you\'re looking for'); 
       } 
       // db.close(); 
      }); 
    }) 
} 

Dans ma base de données, j'ai un document qui a son propre champ id, différent de _id.

Le problème est avec cette ligne de code: query['id'] = req.params.id; En utilisant ceci, j'obtiens event = null. Mais, quand je change ceci à: query['id'] = 1;, j'obtiens les données que je recherche. Je ne sais pas où est le problème.

+0

@Alex Géré pour résoudre le problème. Je dois utiliser Number (req.params.id) parce que req.params.id est une chaîne. –

+0

Super! Vous pouvez ajouter la réponse vous-même, puis l'accepter! – alexbt

Répondre

0

Géré pour résoudre le problème. Je recevais ceci à cause de req.params.id qui est une chaîne. J'ai utilisé Number(req.params.id) et ça marche.