Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/OTapi/node_modules/mongoose/lib/helpers/update/ drwxr-xr-x | |
| Viewing file: Select action/file-type: 'use strict';
const get = require('../get');
/**
* Given an update, move all $set on immutable properties to $setOnInsert.
* This should only be called for upserts, because $setOnInsert bypasses the
* strictness check for immutable properties.
*/
module.exports = function moveImmutableProperties(schema, update, ctx) {
if (update == null) {
return;
}
const keys = Object.keys(update);
for (const key of keys) {
const isDollarKey = key.startsWith('$');
if (key === '$set') {
const updatedPaths = Object.keys(update[key]);
for (const path of updatedPaths) {
_walkUpdatePath(schema, update[key], path, update, ctx);
}
} else if (!isDollarKey) {
_walkUpdatePath(schema, update, key, update, ctx);
}
}
};
function _walkUpdatePath(schema, op, path, update, ctx) {
const schematype = schema.path(path);
if (schematype == null) {
return;
}
let immutable = get(schematype, 'options.immutable', null);
if (immutable == null) {
return;
}
if (typeof immutable === 'function') {
immutable = immutable.call(ctx, ctx);
}
if (!immutable) {
return;
}
update.$setOnInsert = update.$setOnInsert || {};
update.$setOnInsert[path] = op[path];
delete op[path];
}
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0051 ]-- |