Model blogu:

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;

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

Kiedy próbuję wypełnić komentarze na blogu, dostaję pusty obiekt. Identyfikator jest poprawny. Nie mam tego problemu.

var Comment=mongoose.model("comment",schema_comment);
    Blog.findById(id).populate("comments").exec((err,b)=>{
        console.log(b);
    })

Ktoś proszę rozwiązać problem.

0
aditya gaddhyan 4 październik 2020, 07:28

1 odpowiedź

Najlepsza odpowiedź

Aktualizuj

ref musi być łańcuchem, minąłeś niezdefiniowaną zmienną.

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

Wypełnić comments

Blog.findById(req.params.id)
  .populate("comments")
  .exec(function(err, blogs) {
    if (err) {
      console.log(err);
    } else {
      res.render("blogs/show", {
        blog
      });
    }
  });
1
Prathamesh More 4 październik 2020, 05:35