Дом массив 'честная' условия правило


Я провожу много функций для построения запросов в MongoDB. Исходя из их ответа (если не falsy) Я добавляя возвращаемые значения в массив ruleConditions[] который используется позже.

В настоящее время я делаю это так:

//building ruleConditions
var ruleConditions = {$and: []};

var fromConditions = mongoRequestsHelper.getFromConditions(rule.from);
if (fromConditions) ruleConditions.$and.push(fromConditions);

//and 4 similar blocks

Есть ли способ, чтобы избежать ненужных переменных создание (carTypesConditions...)?

Вызов функции в два раза, как:

if (mongoRequestsHelper.getFromConditions(rule.moversFilter)) ruleConditions.push(mongoRequestsHelper.getFromConditions(rule.moversFilter))

это не хорошая идея, очевидно.



141
0
задан 18 марта 2018 в 07:03 Источник Поделиться
Комментарии
1 ответ

Во-первых, вы действительно должны быть с использованием более современных определений переменных (через let и const вместо var).

Как для условной обработки для пунктов в MongoDB, простой способ для обработки данных будет накапливаться все пункты в один временный массив, а затем отфильтровать этот массив в предложении запроса. Например, рассмотрим:

const clauses = [
mongoRequestsHelper.getFromConditions(rule.A),
mongoRequestsHelper.getFromConditions(rule.B),
mongoRequestsHelper.getFromConditions(rule.C),
mongoRequestsHelper.getFromConditions(rule.D),
......
];

const ruleConditions = {
// filter out non-truthy clauses
$and: clauses.filter(clause => clause)
};

3
ответ дан 18 марта 2018 в 02:03 Источник Поделиться