在猫鼬中填充子文档

我希望有人能帮助我解决这个问题。我正在尝试填充 subSchema,但我没有运气。 我有一个 replySchemacommentSchema 和一个 UserSchemareplySchemacommentSchema 的子文档,我想用来自 userSchema 的用户详细信息填充它们 我的问题是下面的代码没有填充我的 replySchema:

REPLY-SCHEMA 和 COMMENT-SCHEMA

const replySchema = new mongoose.Schema(
  {
    replyComment: {
      type: String,required: [true,'Reply comment cannot be empty'],},createdAt: {
      type: Date,default: Date.now(),user: {
      type: mongoose.Schema.ObjectId,ref: 'User','Comment must belong to a user'],{
    timestamps: true,}
);

const commentSchema = new mongoose.Schema(
  {
    comment: {
      type: String,'Comment cannot be empty'],// createdAt: Number,// updatedAt: Number,post: {
      type: mongoose.Schema.ObjectId,ref: 'Post','Comment must belong to a Post'],replies: [replySchema],//replySchema sub-document - is this the right way?
  },{
    // timestamps: { currentTime: () => Math.floor(Date.now() / 1000) },toJSON: { virtuals: true },toObject: { virtuals: true },}
);

replySchema.pre(/^find/,function (next) {
  this.populate({
    path: 'user',select: 'name role avatar',});
  next();
});

commentSchema.pre(/^find/,});
  next();
});

const Comment = mongoose.model('Comment',commentSchema);

module.exports = Comment;

用户架构

const userSchema = new mongoose.Schema(
  {
    name: {
      type: String,trim: true,'Please insert your name'],avatar: {
      type: Object,role: {
      type: String,enum: ['user','admin'],default: 'user',{
    toJSON: { virtuals: true },}
);

const User = mongoose.model('User',userSchema);

module.exports = User;

非常感谢您抽出宝贵时间!

Jason82918 回答:在猫鼬中填充子文档

要在回复中填充用户数据:

this.populate([
    'user',// To populate commentSchema's user field
    {
        path: 'replies',populate: 'user'
    } // To populate replySchema's user field
]);

编辑:

填充特定字段:

this.populate([
    {
        path: 'user',select: 'name role avatar'
    },{
        path: 'replies',populate: {
            path: 'user',select: 'name role avatar'
        }
    }
]);
本文链接:https://www.f2er.com/1372.html

大家都在问