Виртуальное поле Mongoose не работает должным образом - PullRequest
0 голосов
/ 23 октября 2018

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

Ниже старая структура

const projectSchema = new Schema(
  {
    name: { type: String, required: true },
    .
    .
    .
    members: [{ type: Schema.Types.ObjectId, ref: 'Member' }],        .
    .
    .
  {
    toObject: {
      virtuals: true,
    },
    toJSON: {
      virtuals: true,
    },
  },
)

Ниже новая структура.

const projectSchema = new Schema(
  {
    name: { type: String, required: true },
    .
    .
    .
    projectMembers: [
      {
        member: { type: Schema.Types.ObjectId, ref: 'Member' },
        role: { type: Schema.Types.ObjectId, ref: 'Role' },
      },
    ],
    .
    .
    .
  {
    toObject: {
      virtuals: true,
    },
    toJSON: {
      virtuals: true,
    },
  },
)

projectSchema.virtual('members').get(() => {
  return this.projectMembers.map(projectMember => projectMember.member)  
})

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

MongooseError: If you are populating a virtual, you must set the localField and foreignField options

Я просмотрел документы, но не могу заставить это работать.Может ли кто-нибудь помочь мне с тем, где я иду не так?

...