mongoose
mongoose pre и post middleware (крючки)
Поиск…
Промежуточное
Среднее ПО (также называемое pre и post hooks) - это функции, которым передается управление во время выполнения асинхронных функций. Среднее программное обеспечение указано на уровне схемы и полезно для написания плагинов. Mongoose 4.0 имеет 2 типа промежуточного программного обеспечения: промежуточное программное обеспечение документов и промежуточное ПО запроса. Средство промежуточного документа поддерживается для следующих функций документа.
- в этом
- утверждать
- спасти
- Удалить
Запрошенное промежуточное ПО поддерживается для следующих функций Model и Query.
- подсчитывать
- находить
- findOne
- findOneAndRemove
- findOneAndUpdate
- Обновить
Оба промежуточного программного обеспечения и промежуточное программное обеспечение запросов поддерживают до и после перехвата.
до
Существует два типа предварительных крючков, последовательный и параллельный.
последовательный
Последовательное промежуточное программное обеспечение выполняется один за другим, когда каждое промежуточное программное обеспечение вызывает следующее.
var schema = new Schema(..);
schema.pre('save', function(next) {
// do stuff
next();
});
Параллельно
Параллельное промежуточное ПО предлагает более мелкозернистый контроль потока.
var schema = new Schema (..);
// `true` means this is a parallel middleware. You **must** specify `true`
// as the second parameter if you want to use parallel middleware.
schema.pre('save', true, function(next, done) {
// calling next kicks off the next middleware in parallel
next();
setTimeout(done, 100);
});
Метод hooked, в этом случае save, не будет выполняться до тех пор, пока каждое промежуточное программное обеспечение не вызывается.
Почтовое промежуточное ПО
после промежуточного программного обеспечения выполняются после метода hooked и все его предварительное промежуточное программное обеспечение завершено. post middleware не получают непосредственного управления потоком, например, никакие последующие или выполненные обратные вызовы не передаются ему. post hooks - способ регистрации традиционных прослушивателей событий для этих методов.
schema.post('init', function(doc) {
console.log('%s has been initialized from the db', doc._id);
});
schema.post('validate', function(doc) {
console.log('%s has been validated (but not saved yet)', doc._id);
});
schema.post('save', function(doc) {
console.log('%s has been saved', doc._id);
});
schema.post('remove', function(doc) {
console.log('%s has been removed', doc._id);
});