#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/мангустом, так как вы вообще не строите никаких моделей.