我正在尝试(而且惨遭失败)让findOne函数在mongodb上工作。我遵循了本教程(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);
});
});
任何帮助将不胜感激。
您的问题是,当您这样做时:
db.ObjectID.createFromHexString(userToGet)
,您应该这样做:
ObjectID.createFromHexString(userToGet)
因为您在执行操作ObjectID
时已经声明了变量:
ObjectID = require('mongoskin').ObjectID;
提示:永远不要在没有声明的情况下声明变量var
(除非确实有必要),因为如果这样做,它将在全局范围内。改为这样做:
var ObjectID = require('mongoskin').ObjectID;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句