You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							793 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							793 B
						
					
					
				'use strict';
 | 
						|
 | 
						|
/*!
 | 
						|
 * Behaves like `Schema#path()`, except for it also digs into arrays without
 | 
						|
 * needing to put `.0.`, so `getPath(schema, 'docArr.elProp')` works.
 | 
						|
 */
 | 
						|
 | 
						|
module.exports = function getPath(schema, path) {
 | 
						|
  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 (/^\d+$/.test(piece) && isArray) {
 | 
						|
      continue;
 | 
						|
    }
 | 
						|
    cur = cur.length === 0 ? piece : cur + '.' + piece;
 | 
						|
 | 
						|
    schematype = schema.path(cur);
 | 
						|
    if (schematype != null && schematype.schema) {
 | 
						|
      schema = schematype.schema;
 | 
						|
      cur = '';
 | 
						|
      if (schematype.$isMongooseDocumentArray) {
 | 
						|
        isArray = true;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return schematype;
 | 
						|
}; |