Node.js findOne与mongoskin和node
我正在尝试(不幸地失败)让findOne函数在mongodb上工作。我遵循了这个教程(),效果很好,但是当我试图完成一个简单的findOne时,我遇到了这样的问题,有人能帮我解决吗?我已经搜索了每一个教程,我知道你不能只使用findone({u id:“idnumber”}),但我不知道我的有什么问题:Node.js findOne与mongoskin和node,node.js,mongodb,mongoskin,Node.js,Mongodb,Mongoskin,我正在尝试(不幸地失败)让findOne函数在mongodb上工作。我遵循了这个教程(),效果很好,但是当我试图完成一个简单的findOne时,我遇到了这样的问题,有人能帮我解决吗?我已经搜索了每一个教程,我知道你不能只使用findone({u id:“idnumber”}),但我不知道我的有什么问题: router.get('/userlist/:id', function(req, res) { db = req.db; ObjectID = require('mongoskin').Obj
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;
谢谢,我错漏了var,但不知道我必须删除db!再次感谢:)额外提示:为编辑器使用.jshint文件和一些jshint插件。然后还添加了
“使用严格”代码>行在每个文件的顶部。它将指出所有这些var
和类似的问题:)