пн goose отличается условным запросом - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь использовать отличную функцию mon goose для коллекции с динамическим c условным выражением для возвращаемых значений. Когда я использую его в «обычном» поле, оно работает нормально, но когда я пытаюсь использовать его во вложенном поле, оно не работает и каждый раз выдает разные результаты.

для следующего примера он возвращает меня все документы, существующие в 'work.company'

мой запрос на доход:

{ query: 'e',
  usedIds: '', // string separated by commas where each 'word' represent a value that shouldn't return again
  searchFields: 'work.company' // it works for searchFields: 'name'
}

моя попытка вернуть требуемые документы

const regex = new RegExp('^' + req.query.query + '.*');
const query = [];
searchFields.split(",").forEach(field => {
  field = field.trim();
  if (field) {
    query.push({ [field]: { $regex : regex } });
  }
});
let field = Object.keys(query[0])[0];
const distinctQuery = {
  [field]: { $nin: usedIds },
  $or: query
};

employees = await Employee.distinct(field, distinctQuery);

...