Mongoose:TypeError:hex不是一个函数
我正在开发一个简单的数据持久性应用程序使用mongoose,陷入这个错误之后
CastError:在模型“foo”的path“_id”处投射到ObjectId的值“{_id:”id“}”失败“
我试图使用mongoose.Types.ObjectIdbuild议由各个线程,一个部分: https ://stackoverflow.com/a/17223701/4206519,但现在我得到一个新的错误:
TypeError:hex不是一个函数。
这是代码的相关部分:
app.get('/campgrounds/:id', function(req, res){ var id = req.params.id; var ObjectId = mongoose.Types.ObjectId(id); Campground.findById(ObjectId, function(err, found){ if (err) { console.log(err); } else { //render show template with that campground res.render('show.ejs', {campground: found}); } }); }); app.listen(3000, function(){ console.log("server has started"); });
作为一个新手,我可能会在这里犯一个简单的错误,任何帮助将不胜感激。
从过去的两天我也遇到同样的问题,这是由于版本问题
我正在使用这些版本“mongodb”:“^ 2.2.19”,
“mongoose”:“^ 4.7.6”,并得到Hex不是函数的错误
那么我把版本更改为“mongodb”:“2.1.7”,“mongoose”:“4.4.8”
并开始工作,所以我认为他们已经删除了hexfunction和其他所以尝试安装这个版本在你的package.json不要使用^之前的版本名称只需添加“mongodb”:“2.1.7”,“mongoose”:“4.4 .8“并安装
删除var ObjectId = mongoose.Types.ObjectId(id);
它应该工作…并传递id而不是在findById函数中的ObjectId 🙂
如果你正在使用Mongodb驱动程序,你可以这样做
var ObjectID = require('mongodb').ObjectID var id = new ObjectID(req.params.id); // Hex
mongoose
var mongoose = require('mongoose'); var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003'); var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001"); console.log(id); console.log(_id); //4edd40c86762e0fb12000003 //4eb6e7e7e9b7f4194e000001
如何在findById中使用
Campground.findById(id.toString(), function (err, found) { // Do Whatever you like after getting data } );