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;
 | |
| }; |