Reputation: 73
blog model:
ar schema_blog=new mongoose.Schema({
owner:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
title:String,
image:String,
description:String,
created:{type: Date, default: Date.now},
likes: Number,
dislikes: Number,
comments:[{
type:mongoose.Schema.Types.ObjectId,
ref:Comment,
}]
});
var Blog=mongoose.model("blog",schema_blog);
module.exports=Blog;
comment model:
var schema_comment=new mongoose.Schema({
text:String,
created:{type: Date, default: Date.now},
author:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
authorName:String
});
When i try to populate comments inside blog, i get an empty object. The id is correct. I dont get what the problem is.
var Comment=mongoose.model("comment",schema_comment);
Blog.findById(id).populate("comments").exec((err,b)=>{
console.log(b);
})
Someone please solve the problem.
Upvotes: 0
Views: 136
Reputation: 1499
Update
ref
must be String, you passed the undefined variable.
var schema_blog = new mongoose.Schema({
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
title: String,
image: String,
description: String,
created: {
type: Date,
default: Date.now
},
likes: Number,
dislikes: Number,
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: "comment", //This must be String
}]
});
module.exports = mongoose.model("blog", schema_blog);
Populate comments
Blog.findById(req.params.id)
.populate("comments")
.exec(function(err, blogs) {
if (err) {
console.log(err);
} else {
res.render("blogs/show", {
blog
});
}
});
Upvotes: 1