簡體   English   中英

Mongoose:TypeError:hex不是函數

[英]Mongoose: TypeError: hex is not a function

我正在使用mongoose開發一個簡單的數據持久性應用程序,之后遇到了這個錯誤

CastError:對於模型'foo',對於路徑“_id”的值“{_id:'id'}”,Cast to ObjectId失敗

我試圖用mongoose.Types.ObjectId由各個線程的建議,一個partcular: 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");
});

作為一個新手,我可能在這里犯了一個簡單的錯誤,任何幫助將不勝感激。

從過去2天起,我也遇到了同樣的問題,這是由於版本問題

我正在使用這些版本“mongodb”:“^ 2.2.19”,

“mongoose”:“^ 4.7.6”,並且得到Hex不是函數的錯誤

然后我將版本更改為“mongodb”:“2.1.7”,“mongoose”:“4.4.8”

並且它開始工作所以我認為他們已經刪除了十六進制函數和其他所以嘗試在你的package.json中安裝此版本之后不要使用^版本名稱之前添加“mongodb”:“2.1.7”,“mongoose”:“4.4 .8“並安裝

刪除var ObjectId = mongoose.Types.ObjectId(id); 它應該工作...並在findById函數中傳遞id而不是ObjectId :)

如果你使用Mongodb驅動程序,你可以這樣做

var ObjectID = require('mongodb').ObjectID
var id = new ObjectID(req.params.id); // Hex 

貓鼬

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
 } );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM