Commit
This commit is contained in:
commit
d1c8cae2c1
1417 changed files with 326736 additions and 0 deletions
44
node_modules/mongoose/lib/helpers/query/handleImmutable.js
generated
vendored
Normal file
44
node_modules/mongoose/lib/helpers/query/handleImmutable.js
generated
vendored
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
'use strict';
|
||||
|
||||
const StrictModeError = require('../../error/strict');
|
||||
|
||||
/**
|
||||
* Handle immutable option for a given path when casting updates based on options
|
||||
*
|
||||
* @param {SchemaType} schematype the resolved schematype for this path
|
||||
* @param {Boolean | 'throw' | null} strict whether strict mode is set for this query
|
||||
* @param {Object} obj the object containing the value being checked so we can delete
|
||||
* @param {String} key the key in `obj` which we are checking for immutability
|
||||
* @param {String} fullPath the full path being checked
|
||||
* @param {Object} options the query options
|
||||
* @param {Query} ctx the query. Passed as `this` and first param to the `immutable` option, if `immutable` is a function
|
||||
* @returns true if field was removed, false otherwise
|
||||
*/
|
||||
|
||||
module.exports = function handleImmutable(schematype, strict, obj, key, fullPath, options, ctx) {
|
||||
if (schematype == null || !schematype.options || !schematype.options.immutable) {
|
||||
return false;
|
||||
}
|
||||
let immutable = schematype.options.immutable;
|
||||
|
||||
if (typeof immutable === 'function') {
|
||||
immutable = immutable.call(ctx, ctx);
|
||||
}
|
||||
if (!immutable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (options && options.overwriteImmutable) {
|
||||
return false;
|
||||
}
|
||||
if (strict === false) {
|
||||
return false;
|
||||
}
|
||||
if (strict === 'throw') {
|
||||
throw new StrictModeError(null,
|
||||
`Field ${fullPath} is immutable and strict = 'throw'`);
|
||||
}
|
||||
|
||||
delete obj[key];
|
||||
return true;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue