merge-deep
$merge-deep
Recursively deep-merges the argument object into the input object, returning a new object. Nested plain objects are merged rather than replaced; arrays and primitive values are overwritten. The input is not mutated.
Use $merge for shallow (one-level) merging.
Parameters
- Object of fields to deep-merge (object, required): Key/value pairs to apply over the input.
Example
// Deep-merge default nested config into the user-supplied object
new Schema('object').transformer({
'$merge-deep': {
logging: {level: 'info', format: 'json'},
server: {port: 3000},
}
})
// {logging: {level: 'debug'}, server: {host: 'localhost'}}
// → {logging: {level: 'debug', format: 'json'}, server: {host: 'localhost', port: 3000}}
// Inject a nested metadata field without overwriting sibling keys
new Schema('object').transformer({'$merge-deep': {meta: {version: 1}}})
// {meta: {author: 'rg'}} → {meta: {author: 'rg', version: 1}}