У меня есть промежуточное программное обеспечение pre deleteMany в понедельник goose, и алгоритм этого промежуточного программного обеспечения выполняет итерации для других моделей, поэтому я хочу инкапсулировать этот алгоритм с помощью функции, которая может использоваться для других моделей.
, но когда я передаю следующий в качестве параметра для функционирования накоплена эта ошибка:
следующий не является функцией
мое первоначальное промежуточное ПО:
ShahrestanSchema.pre("deleteMany", function (next) {
console.log('shahrestan-remove-controller-start')
const { OstanModel } = require('./Ostan');
const shahrestan_id_qry = this._conditions._id;
OstanModel.find({ shahrestans: shahrestan_id_qry })
.then(ostans => {
Promise.all(
ostans.map(ostan =>
OstanModel.findByIdAndUpdate(
ostan._id,
{ $pullAll: { shahrestans: shahrestan_id_qry['$in'] } },
{ new: true }
)
))
.then(() => {
console.log('shahrestan-remove-controller-end')
next()
})
.catch(ex => next(new Error(ex)))
});
});
это работает отлично, но когда я инкапсулирую это, как показано ниже:
function deleteManyController(thisOp, next, parentModel, parentKey) {
console.log('shahrestan-remove-controller-start')
const this_id_qry = thisOp._conditions._id;
parentModel.find({ parentKey: this_id_qry })
.then(findeds => {
Promise.all(
findeds.map(finded =>
parentModel.findByIdAndUpdate(
finded._id,
{ $pullAll: { parentKey: this_id_qry['$in'] } },
{ new: true }
)
))
.then(() => {
console.log('shahrestan-remove-controller-end')
next()
})
.catch(ex => next(new Error(ex)))
});
}
и меняю свое промежуточное ПО, как показано ниже:
ShahrestanSchema.post('deleteMany', function (next) {
const thisOp = this
deleteManyController(thisOp, next, OstanModel, 'shahrestans')
})
эта ошибка возникла:
TypeError: next не является функцией
Есть ли у вас идеи для инкапсуляции промежуточного программного обеспечения как функции?