Я немного застрял в этой проблеме.Я прочитал всю документацию mongoose о промежуточном программном обеспечении и некоторой проблеме с переполнением стека, и не смог выяснить, как решить мою проблему без дублирования запросов (найти, а затем удалить).
Обычно предварительное промежуточное ПО при удалении не срабатывает, когдазвонок из модели, а не из документа.Но согласно документу , если я добавлю {query: true}, моя функция будет вызываться из запроса модели.
Я использую последнюю версию monngoose (5.4.16)
Вот мой код.
let mySchema= new mongoose.Schema({
name: String,
comment: String
}, { usePushEach: true });
mySchema.pre('remove', { document: true }, function() {
console.log('remove document');
});
mySchema.pre('remove', { query: true }, function() {
console.log('remove');
});
const MyModel = mongoose.model('MyModel', mySchema);
И вызов здесь
MyModel.deleteOne({ _id: modelId }, (errorRm) => {
if (errorRm) {
return res.json({ success: false, message: `${errorRm.message}` });
}
return res.json({ success: true, message: 'Model successfully removed' });
});
Модель успешно удалена, но ничего не регистрируется в функциях "pre" ...
Любая помощь будет приветствоваться.