findOne与mongoskin和节点
我正在尝试(并失败)得到一个MongoDB的findOne函数。 我遵循这个教程( http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/ ),它工作正常,但是当我试图得到一个简单的findOne去我有有这样的问题,有人可以帮我吗? 我已经search了每个教程,我知道你不能只使用findone({_ id:“idnumber”}),但我不知道我的错在哪里:
router.get('/userlist/:id', function(req, res) { db = req.db; ObjectID = require('mongoskin').ObjectID; var userToGet = req.params.id; db.collection('userlist').findOne({_id: db.ObjectID.createFromHexString(userToGet)}, function(err, result) { console.log(result.username); }); });
我得到错误“不能调用未定义的方法'createFromHexString',我应该在哪里需要我的mongoskin.objectid?
我findall完美的作品:
router.get('/userlist', function(req, res) { db = req.db; db.collection('userlist').find().toArray(function (err, items) { res.json(items); }); });
任何帮助将不胜感激。
你的问题是,当你这样做:
db.ObjectID.createFromHexString(userToGet)
,你应该这样做:
ObjectID.createFromHexString(userToGet)
因为您在执行时已经声明了ObjectID
variables:
ObjectID = require('mongoskin').ObjectID;
提示:不要声明一个没有var
语句的variables(除非真的有必要),因为如果你这样做的话,它会在全局范围内。 做这个,而不是:
var ObjectID = require('mongoskin').ObjectID;