Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js findOne与mongoskin和node_Node.js_Mongodb_Mongoskin - Fatal编程技术网

Node.js findOne与mongoskin和node

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

我正在尝试(不幸地失败)让findOne函数在mongodb上工作。我遵循了这个教程(),效果很好,但是当我试图完成一个简单的findOne时,我遇到了这样的问题,有人能帮我解决吗?我已经搜索了每一个教程,我知道你不能只使用findone({u 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;

谢谢,我错漏了var,但不知道我必须删除db!再次感谢:)额外提示:为编辑器使用.jshint文件和一些jshint插件。然后还添加了
“使用严格”行在每个文件的顶部。它将指出所有这些
var
和类似的问题:)