Cleanup
This commit is contained in:
20
node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js
generated
vendored
20
node_modules/mongoose/lib/helpers/query/getEmbeddedDiscriminatorPath.js
generated
vendored
@@ -3,19 +3,23 @@
|
||||
const cleanPositionalOperators = require('../schema/cleanPositionalOperators');
|
||||
const get = require('../get');
|
||||
const getDiscriminatorByValue = require('../discriminator/getDiscriminatorByValue');
|
||||
const updatedPathsByArrayFilter = require('../update/updatedPathsByArrayFilter');
|
||||
|
||||
/*!
|
||||
* Like `schema.path()`, except with a document, because impossible to
|
||||
* determine path type without knowing the embedded discriminator key.
|
||||
*/
|
||||
|
||||
module.exports = function getEmbeddedDiscriminatorPath(schema, update, filter, path) {
|
||||
module.exports = function getEmbeddedDiscriminatorPath(schema, update, filter, path, options) {
|
||||
const parts = path.split('.');
|
||||
let schematype = null;
|
||||
let type = 'adhocOrUndefined';
|
||||
|
||||
filter = filter || {};
|
||||
update = update || {};
|
||||
const arrayFilters = options != null && Array.isArray(options.arrayFilters) ?
|
||||
options.arrayFilters : [];
|
||||
const updatedPathsByFilter = updatedPathsByArrayFilter(update);
|
||||
|
||||
for (let i = 0; i < parts.length; ++i) {
|
||||
const subpath = cleanPositionalOperators(parts.slice(0, i + 1).join('.'));
|
||||
@@ -39,6 +43,7 @@ module.exports = function getEmbeddedDiscriminatorPath(schema, update, filter, p
|
||||
if (discriminatorFilterPath in filter) {
|
||||
discriminatorKey = filter[discriminatorFilterPath];
|
||||
}
|
||||
|
||||
const wrapperPath = subpath.replace(/\.\d+$/, '');
|
||||
if (schematype.$isMongooseDocumentArrayElement &&
|
||||
get(filter[wrapperPath], '$elemMatch.' + key) != null) {
|
||||
@@ -49,11 +54,22 @@ module.exports = function getEmbeddedDiscriminatorPath(schema, update, filter, p
|
||||
discriminatorKey = update[discriminatorValuePath];
|
||||
}
|
||||
|
||||
for (const filterKey of Object.keys(updatedPathsByFilter)) {
|
||||
const schemaKey = updatedPathsByFilter[filterKey] + '.' + key;
|
||||
const arrayFilterKey = filterKey + '.' + key;
|
||||
if (schemaKey === discriminatorFilterPath) {
|
||||
const filter = arrayFilters.find(filter => filter.hasOwnProperty(arrayFilterKey));
|
||||
if (filter != null) {
|
||||
discriminatorKey = filter[arrayFilterKey];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (discriminatorKey == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const discriminatorSchema = getDiscriminatorByValue(schematype.caster, discriminatorKey).schema;
|
||||
const discriminatorSchema = getDiscriminatorByValue(schematype.caster.discriminators, discriminatorKey).schema;
|
||||
|
||||
const rest = parts.slice(i + 1).join('.');
|
||||
schematype = discriminatorSchema.path(rest);
|
||||
|
||||
Reference in New Issue
Block a user