123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- 'use strict';
- const each = require('async/each');
- /*!
- * ignore
- */
- module.exports = function(schema) {
- const unshift = true;
- schema.s.hooks.pre('save', false, function(next) {
- if (this.ownerDocument) {
- next();
- return;
- }
- const _this = this;
- const subdocs = this.$__getAllSubdocs();
- if (!subdocs.length) {
- next();
- return;
- }
- each(subdocs, function(subdoc, cb) {
- subdoc.schema.s.hooks.execPre('save', subdoc, function(err) {
- cb(err);
- });
- }, function(error) {
- if (error) {
- return _this.schema.s.hooks.execPost('save:error', _this, [_this], { error: error }, function(error) {
- next(error);
- });
- }
- next();
- });
- }, null, unshift);
- schema.s.hooks.post('save', function(doc, next) {
- if (this.ownerDocument) {
- next();
- return;
- }
- const _this = this;
- const subdocs = this.$__getAllSubdocs();
- if (!subdocs.length) {
- next();
- return;
- }
- each(subdocs, function(subdoc, cb) {
- subdoc.schema.s.hooks.execPost('save', subdoc, [subdoc], function(err) {
- cb(err);
- });
- }, function(error) {
- if (error) {
- return _this.schema.s.hooks.execPost('save:error', _this, [_this], { error: error }, function(error) {
- next(error);
- });
- }
- next();
- });
- }, null, unshift);
- };
|