MissingSchemaError: Схема не была зарегистрирована для модели \ "[объект объекта] \". \ NUse mongoose.model (name, schema)

У меня есть эта схема:

const PuestoSchema = new Schema(
  {
   //....more data
   reportaA: {
      type: Schema.Types.ObjectId,
      ref: "Puesto"
    },

   //...
})


module.exports = mongoose.model("Puesto", PuestoSchema)

Он ссылается на себя (другие идентификаторы документов). Поэтому я пытаюсь популяризировать это следующим образом:

function autoPopulate(next) {
  let puestoSchema = mongoose.model('Puesto')

  this.populate("reportaA")


  next()
}

PuestoSchema
  .pre("findById", autoPopulate)
  .pre("findOne", autoPopulate)
  .pre("find", autoPopulate)

Но я получаю эту ошибку.

MissingSchemaError: Схема не была зарегистрирована для модели \ "[объектный объект] \". \ NUse mongoose.model (name, schema)

Есть ли способ вызывать эту модель для использования в качестве ссылки внутри себя?

1
задан 14.11.2019, 17:54
1 ответ

Тебе надо в модели показывать schema, который должен использовать

function autoPopulate(next) {
  let puestoSchema = mongoose.model('Puesto') <-- Aquí
  // deberia ser: let puestoSchema = mongoose.model('Puesto', PuestoSchema)

  this.populate("reportaA")


  next()
}

PuestoSchema
  .pre("findById", autoPopulate)
  .pre("findOne", autoPopulate)
  .pre("find", autoPopulate)
0
ответ дан 01.12.2019, 11:36