You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
744 B
JavaScript
32 lines
744 B
JavaScript
10 months ago
|
'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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|