我正在尝试(并且悲惨地失败)让一个使用mongodb的findOne函数。我遵循了这个教程(http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/)并且它工作正常,但是当我试图得到一个简单的findOne时,我遇到了这样的问题,有人可以帮帮我吗?我已经搜索过每一个教程,我知道你不能使用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);
});
});
任何帮助都会非常感激。
答案 0 :(得分:2)
你的问题是,当你这样做时:
db.ObjectID.createFromHexString(userToGet)
,你应该这样做:
ObjectID.createFromHexString(userToGet)
因为您在执行时已经声明了ObjectID
变量:
ObjectID = require('mongoskin').ObjectID;
提示:永远不要在没有var
语句的情况下声明变量(除非它真的是必要的),因为如果你这样做,它将在全局范围内。这样做:
var ObjectID = require('mongoskin').ObjectID;