Как я могу разыграть ObjectId в Mongodb? Я пробовал разные способы, но все еще получаю ошибки - PullRequest
0 голосов
/ 09 марта 2020

Схема

// SCHEMA SETUP

var campgroundSchema = new mongoose.Schema({
    name: String,
    image: String,
    description: String
})

var campground = mongoose.model("campground", campgroundSchema)


#The error is where coming from here, don't seem to get the campgrounds diplayed
app.get("/campgrounds/:id", function(req, res){
    //find the campground with provided ID
    campground.findById(req.params.id, function(err, foundCampground){
        if(err){
            console.log(err)
        } else {
            //render show template
            res.render("show", {campground: foundCampground})
        }
    })
})

Сообщение об ошибке

** Сообщение: «Приведение к ObjectId не выполнено для значения« 5e61150b58e80830240ef790 «по пути» _id "для модели" палаточный лагерь "', имя:' CastError ', модель: модель {палаточный лагерь}} **

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Вы можете привести свою строку к MongoId с помощью метода mongoose.Types.ObjectId() и передать свою строку в качестве первого параметра.

Например, после использования вышеописанного метода ваш код выглядит примерно так:

app.get("/campgrounds/:id", function(req, res){
    //find the campground with provided ID
    campground.findById(
      mongoose.Types.ObjectId(req.params.id),
      function(err, foundCampground){
        if(err){
            console.log(err)
        } else {
            //render show template
            res.render("show", {campground: foundCampground})
        }
    })
});
0 голосов
/ 09 марта 2020

Вы можете передать { _id: false } при создании такой схемы

var campgroundSchema = new mongoose.Schema({
    name: String,
    image: String,
    description: String
}, { _id: false })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...