2016-03-03 69 views
1

我是相当新的NodeJSMongoDB查找在MongoDB的ID返回null

我试图做一个很基本的东西,但它似乎并不奏效。
我相信我在某处丢失了某些东西。

基本上,我试图从基于id的数据库中找到一个用户。
这里是我的代码:

function findUser(id, cb) { 
    MongoClient.connect(cs, function(err, db) { 
     var col = db.collection('users'); 
     col.findOne({ _id: id }, function(err, user) { 
      // Value of user here is always null 
      // However, if I manually check the database, 
      // I can clearly see that the user with the 
      // same id does exists. 
      return cb(err, user); 
     }); 
    }); 
} 

回答

1

我假设你id类型为string

如果是这样的话,你需要将其转换为一个适当的蒙戈ObjectID

试试这个代码:

var ObjectID = require('mongodb').ObjectID; 

function findUser(id, cb) { 
    MongoClient.connect(cs, function(err, db) { 
     var col = db.collection('users'); 
     col.findOne({ _id: new ObjectID(id) }, function(err, user) { 
      return cb(err, user); 
     }); 
    }); 
} 
+0

非常感谢月亮!我会试一试。 – nirali35

+0

这似乎是工作。再次感谢。 – nirali35

0

我使用这个代码:

var ObjectID = require('mongodb').ObjectID; 

app.get('/api/users/:id', function (req, res) { 
    db.collection('users', function (err, collection) { 
     collection.findOne({ 
      _id: new ObjectID(req.params.id) 
     }, function (err, result) { 
      res.send(result); 
     }); 
    }); 
}); 

它的工作原理!