Я не могу понять, как заполнить динамическую ссылку в мангусте

#javascript #mongodb #mongoose #mongodb-query #populate

#язык JavaScript #mongodb #мангуст #mongodb-запрос #населять

Вопрос:

Это мой код модели пользователя. Я ссылаюсь на избранное, используя динамическую ссылку, так как есть три типа сообщений, которые можно добавить в избранное

 import mongoose from 'mongoose' import bcrypt from 'bcryptjs'  const userSchema = mongoose.Schema(  {  name: {  type: String,  required: true,  },  email: {  type: String,  required: true,  unique: true,  },  password: {  type: String,  required: true,  },  isAdmin: {  type: Boolean,  required: true,  default: false,  },  contact:{  type:Number,  required: true,  unique:true  },  cnic: {  type: Number,  required: true,  unique: true  },  favorites: [  {  postType: {  type: String  },  postId: {  type: mongoose.Schema.Types.ObjectId,  refPath: 'postType'  },  }  ],  itemsRented: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'Rent',  }  ],  itemsRentedOut: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'Rent',  }  ],  collectionRequestsSent: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'CommunityService',  }  ],  itemsCollected: [  {  type: mongoose.Schema.Types.ObjectId,  ref: 'CommunityService',  }  ],  servicesOrdered: [  {  type:mongoose.Schema.Types.ObjectId,  ref: 'Services'  }  ],  paymentDetails: {  card: { type: Number },  cvc: { type: Number },  name: { type: String },  email: {type: String },  expiryDate: {  month: { type: Number },  year: { type: Number }  },  },  address: { type: String },  isDisputeResolutionStaff: {  type: String,  default: false  }  },  {  timestamps: true,  } )  userSchema.methods.matchPassword = async function (enteredPassword) {  return await bcrypt.compare(enteredPassword, this.password) }  userSchema.pre('save', async function (next) {  if (!this.isModified('password')) {  next()  }   const salt = await bcrypt.genSalt(10)  this.password = await bcrypt.hash(this.password, salt) })  const User = mongoose.model('User', userSchema)  export default User 

Это мой контроллер. Я хочу, чтобы сведения о сообщениях добавлялись в избранное с помощью функции заполнить, но когда я запускаю код, он возвращает объект пользователя, а не сведения о сообщениях

 const getFavorites = asyncHandler(async(req,res) =gt; {  await User.  findById("61b51adfb7b8a64fd87420d3").  populate("favorites").  exec(function (err, story) {  if (err) throw new Error(err);  console.log(story);  }); }) 

Комментарии:

1. к какой таблице должен относиться столбец «избранное»?

2. Это относится либо к одной из Услуг, либо к Аренде, либо к коммунальному обслуживанию

3. Вы должны указать ref=’ Название модели ‘.