использование промежуточного программного обеспечения мангуста с помощью SchemaFactory

#mongoose #nestjs #mongoose-schema #mongoose-middleware

Вопрос:

Я пытаюсь использовать промежуточное программное обеспечение mongoose для рекурсивного удаления ссылок на этот объект в другом массиве объектов (удалить task ссылки taskList с идентификатором из task ).

Проблемная функция:

 TaskSchema.pre('deleteOne', function(next) {
    console.log(this)
    const task: any = this
    this.model('Set').deleteMany({ $pullAll: { taskList: Types.ObjectId(task.id.toString()) } }, next)
})
 

Это вызывает ошибку ObjectParameterError: параметр «obj» для Document() должен быть объектом при вызове

 const task = await this.taskSchema.deleteOne({ _id: id })
 

Кроме того, проблема в том, что в последней строке this.model => я нигде не использую модель, так как вместо объявления модели я использую:

 export type TaskDocument = Task amp; Document
export const TaskSchema = SchemaFactory.createForClass(Task)
 

Объект Задачи:

введите описание изображения здесь

Заданный Объект:

введите описание изображения здесь

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

1. функция стрелки имеет лексическую область действия. Вместо этого измените этот обратный вызов, переданный .pre функции.

2. теперь это вызывает у меня ошибку ObjectParameterError: параметр «obj» для Document() должен быть объектом

3. похоже, что нет никакого способа использовать schema.model() с nestjs/мангустом, так как вы вообще не строите никаких моделей.