File size: 744 Bytes
9756872
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'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);
      }
    }
  }
};