mon goose возвращает ObjectParameterError () при сохранении в базе данных - PullRequest
0 голосов
/ 04 марта 2020

У меня есть схема ресторана и схема отзывов .... всякий раз, когда я пытаюсь включить обзор в базу данных mon goose, используя метод create (), он выдает ошибку как:

ObjectParameterError: Параметр "obj" для Document () должен быть объектом, получившим очень дорогое место в новом ObjectParameterError (/workspace/groomIDE-setup123/restaurants/node_modules/mongoose/lib/error/objectParameter.js:25:11 )

мои схемы выглядят следующим образом:

var restSchema = new mongoose.Schema({
    title: String,
    review: String,
    image: String,
    reviews:[{
        type:mongoose.Schema.Types.ObjectId,
        ref:"Review"
    }
    ]
})
var reviewSchema = new mongoose.Schema({
    author:{
        id:{
            type:mongoose.Schema.Types.ObjectId,
            ref:"User"
        },
        username:String
    },
    review:String
});

Путь для создания и просмотра нового обзора выглядит следующим образом:

app.post("/restaurants/:id/reviews",(req,res)=>{
    Restaurant.findById(req.params.id,(err,foundRestaurant)=>{
        if(err)
            console.log(err);
        else
        Review.create(req.body.comment,(err,newReview)=>{
        if(err)
            console.log(err);
        else{
            newReview.author.id=req.user._id;
            newReview.author.username=req.user.username;
            newReview.save();
            foundRestaurant.reviews.push(newReview);
            foundRestaurant.save();
            // res.redirect("/restaurants/"+req.params.id);
            }
        })  
    })
});
app.get("/restaurants/:id",(req,res)=>{
    Restaurant.findById(req.params.id).populate("reviews").exec((err,foundRestaurant)=>{
        if(err)
            console.log(err);
        else{
            res.render("show",{restaurant:foundRestaurant});
            }
    })
});

1 Ответ

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

Пн goose create() функция должна получить значения, соответствующие схеме. Вы можете прочитать больше об этом здесь: https://mongoosejs.com/docs/api.html#model_Model .create Попробуйте определить свой новый объект newReview и затем поместите его в массив foundRestaurant.reviews, например:

установить новый объект обзора:

const newReview={ author.id:req.user._id, username:req.user.username, };

создайте и сохраните его:

Review.create(newReview);

и затем pu sh в массив Restaurant.reviews:

foundRestaurant.reviews.push(newReview);

надеюсь, это имеет смысл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...