/
1Rrd0
/
Course
Обзор
Документация
Войти
/
1Rrd0
/
Course
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/mongoose/lib/helpers/schema/getPath.js
43 строки
1 KB
dima
2
13 дек 2025, 10:58
13 дек 2025, 10:58
ce5a48e
Код
Авторство
О чём код?
'use strict'; const numberRE = /^\d+$/; /** * Behaves like `Schema#path()`, except for it also digs into arrays without * needing to put `.0.`, so `getPath(schema, 'docArr.elProp')` works. * @api private */ module.exports = function getPath(schema, path, discriminatorValueMap) { let schematype = schema.path(path); if (schematype != null) { return schematype; } const pieces = path.split('.'); let cur = ''; let isArray = false; for (const piece of pieces) { if (isArray && numberRE.test(piece)) { continue; } cur = cur.length === 0 ? piece : cur + '.' + piece; schematype = schema.path(cur); if (schematype?.schema) { schema = schematype.schema; if (!isArray && schematype.$isMongooseDocumentArray) { isArray = true; } if (discriminatorValueMap && discriminatorValueMap[cur]) { schema = schema.discriminators[discriminatorValueMap[cur]] ?? schema; } cur = ''; } else if (schematype?.instance === 'Mixed') { // If we found a mixed path, no point in digging further, the end result is always Mixed break; } } return schematype; };