deno.land / x / mongoose@6.7.5 / lib / helpers / query / applyQueryMiddleware.js

applyQueryMiddleware.js
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict';
/*! * ignore */
module.exports = applyQueryMiddleware;
const validOps = require('./validOps');
/*! * ignore */
applyQueryMiddleware.middlewareFunctions = validOps.concat([ 'validate']);
/** * Apply query middleware * * @param {Query} Query constructor * @param {Model} model * @api private */
function applyQueryMiddleware(Query, model) { const kareemOptions = { useErrorHandlers: true, numCallbackParams: 1, nullResultByDefault: true };
const middleware = model.hooks.filter(hook => { const contexts = _getContexts(hook); if (hook.name === 'updateOne') { return contexts.query == null || !!contexts.query; } if (hook.name === 'deleteOne') { return !!contexts.query || Object.keys(contexts).length === 0; } if (hook.name === 'validate' || hook.name === 'remove') { return !!contexts.query; } if (hook.query != null || hook.document != null) { return !!hook.query; } return true; });
// `update()` thunk has a different name because `_update` was already taken Query.prototype._execUpdate = middleware.createWrapper('update', Query.prototype._execUpdate, null, kareemOptions); // `distinct()` thunk has a different name because `_distinct` was already taken Query.prototype.__distinct = middleware.createWrapper('distinct', Query.prototype.__distinct, null, kareemOptions);
// `validate()` doesn't have a thunk because it doesn't execute a query. Query.prototype.validate = middleware.createWrapper('validate', Query.prototype.validate, null, kareemOptions);
applyQueryMiddleware.middlewareFunctions. filter(v => v !== 'update' && v !== 'distinct' && v !== 'validate'). forEach(fn => { Query.prototype[`_${fn}`] = middleware.createWrapper(fn, Query.prototype[`_${fn}`], null, kareemOptions); });}
function _getContexts(hook) { const ret = {}; if (hook.hasOwnProperty('query')) { ret.query = hook.query; } if (hook.hasOwnProperty('document')) { ret.document = hook.document; } return ret;}
mongoose

Version Info

Tagged at
a year ago