通过_id从Node.js

时间:2017-01-08 06:02:09

标签: node.js mongodb

我正在尝试从位于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)

1 个答案:

答案 0 :(得分:1)

我今天收到与某些 mongodb-core 更新相关的类似错误。

我通过将mongodb-core强制转换为我以前的版本来修复它:

npm install --save mongodb-core@1.3.18

无论如何,你要检查的第一件事是 req.params.id 有一个有效的十六进制25字符串。