我正在尝试从位于MLab上的MongoDB访问该文档,但在使用_id访问文档时出现以下错误。以下是供您参考的代码
var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb://<<UserName>>:<<Password>>@aadds157248.mlab.com:57248/<<DatabaseName>>',['temp1']);
router.get('/todo/:id',function(req,res,next){
var ObjectID = mongojs.ObjectID;
var o_id = new ObjectID (req.params.id);
db.temp1.findOne({
'_id': o_id
},
function(err,temp1){
if (err){
res.send(err);
}
else {
res.json(temp1);
}
})
});
但在尝试访问网址时遇到以下错误:http://localhost:3000/api/v1/todo/5870f7f1f36d2872530d26f1
TypeError:hex不是函数 在Function.from(native) 在Function.from(native) at new ObjectID(C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ bson \ lib \ bson \ objectid.js:52:32) 在C:\ Kamlesh \ Angular2 \ intenodos \ routes \ todos.js:23:14 在Layer.handle [as handle_request](C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ layer.js:95:5) 在下一个(C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ route.js:131:13) 在Route.dispatch(C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ route.js:112:3) 在Layer.handle [as handle_request](C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ layer.js:95:5) 在C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ index.js:277:22 在param(C:\ Kamlesh \ Angular2 \ meansodos \ node_modules \ express \ lib \ router \ index.js:349:14)
答案 0 :(得分:1)
我今天收到与某些 mongodb-core 更新相关的类似错误。
我通过将mongodb-core强制转换为我以前的版本来修复它:
npm install --save mongodb-core@1.3.18
无论如何,你要检查的第一件事是 req.params.id 有一个有效的十六进制25字符串。