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.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							743 B
						
					
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							743 B
						
					
					
				'use strict';
 | 
						|
 | 
						|
const get = require('../get');
 | 
						|
const mpath = require('mpath');
 | 
						|
const parseProjection = require('../projection/parseProjection');
 | 
						|
 | 
						|
/*!
 | 
						|
 * ignore
 | 
						|
 */
 | 
						|
 | 
						|
module.exports = function removeDeselectedForeignField(foreignFields, options, docs) {
 | 
						|
  const projection = parseProjection(get(options, 'select', null), true) ||
 | 
						|
    parseProjection(get(options, 'options.select', null), true);
 | 
						|
 | 
						|
  if (projection == null) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  for (const foreignField of foreignFields) {
 | 
						|
    if (!projection.hasOwnProperty('-' + foreignField)) {
 | 
						|
      continue;
 | 
						|
    }
 | 
						|
 | 
						|
    for (const val of docs) {
 | 
						|
      if (val.$__ != null) {
 | 
						|
        mpath.unset(foreignField, val._doc);
 | 
						|
      } else {
 | 
						|
        mpath.unset(foreignField, val);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}; |