/node_modules/mongoose/lib/services/model/applyHooks.js
https://bitbucket.org/coleman333/smartsite · JavaScript · 51 lines · 35 code · 7 blank · 9 comment · 6 complexity · 6355e816606fbe3c890840ea16b94970 MD5 · raw file
- 'use strict';
- /*!
- * ignore
- */
- module.exports = applyHooks;
- /*!
- * Register hooks for this model
- *
- * @param {Model} model
- * @param {Schema} schema
- */
- function applyHooks(model, schema, options) {
- options = options || {};
- const kareemOptions = {
- useErrorHandlers: true,
- numCallbackParams: 1,
- nullResultByDefault: true,
- contextParameter: true
- };
- const objToDecorate = options.decorateDoc ? model : model.prototype;
- model.$appliedHooks = true;
- for (let i = 0; i < schema.childSchemas.length; ++i) {
- const childModel = schema.childSchemas[i].model;
- if (childModel.$appliedHooks) {
- continue;
- }
- applyHooks(childModel, schema.childSchemas[i].schema, options);
- if (childModel.discriminators != null) {
- let keys = Object.keys(childModel.discriminators);
- for (let j = 0; j < keys.length; ++j) {
- applyHooks(childModel.discriminators[keys[j]],
- childModel.discriminators[keys[j]].schema, options);
- }
- }
- }
- objToDecorate.$__save = schema.s.hooks.
- createWrapper('save', objToDecorate.$__save, null, kareemOptions);
- objToDecorate.$__validate = schema.s.hooks.
- createWrapper('validate', objToDecorate.$__validate, null, kareemOptions);
- objToDecorate.$__remove = schema.s.hooks.
- createWrapper('remove', objToDecorate.$__remove, null, kareemOptions);
- objToDecorate.$__init = schema.s.hooks.
- createWrapperSync('init', objToDecorate.$__init, null, kareemOptions);
- }