diff options
Diffstat (limited to 'node_modules/mongoose/lib/helpers/get.js')
-rw-r--r-- | node_modules/mongoose/lib/helpers/get.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/node_modules/mongoose/lib/helpers/get.js b/node_modules/mongoose/lib/helpers/get.js new file mode 100644 index 0000000..dcb3881 --- /dev/null +++ b/node_modules/mongoose/lib/helpers/get.js @@ -0,0 +1,39 @@ +'use strict'; + +/*! + * Simplified lodash.get to work around the annoying null quirk. See: + * https://github.com/lodash/lodash/issues/3659 + */ + +module.exports = function get(obj, path, def) { + const parts = path.split('.'); + let rest = path; + let cur = obj; + for (const part of parts) { + if (cur == null) { + return def; + } + + // `lib/cast.js` depends on being able to get dotted paths in updates, + // like `{ $set: { 'a.b': 42 } }` + if (cur[rest] != null) { + return cur[rest]; + } + + cur = getProperty(cur, part); + + rest = rest.substr(part.length + 1); + } + + return cur == null ? def : cur; +}; + +function getProperty(obj, prop) { + if (obj == null) { + return obj; + } + if (obj instanceof Map) { + return obj.get(prop); + } + return obj[prop]; +}
\ No newline at end of file |