Написание троичного выражения для соответствия конкретному If / Else в JavaScript - PullRequest
0 голосов
/ 13 октября 2018

При выполнении ETL для передачи данных из базы данных Sybase в бэкэнд MongoDB я могу сделать следующее:

if (data.hire_date) staffProfile.hireDate = data.hire_date;

Этот метод предотвращает заполнение пустых значений в MongoDB.Если значение data.hire_date имеет значение, оно будет сброшено в staffProfile.hireDate.Однако, если нет значения, оно фактически игнорируется.

Теперь я хотел бы создать тот же результат с троичным выражением.Что-то вроде:

staffProfile.hireDate = data_hireDate ? data_hireDate : null;

Однако я не хочу использовать null здесь, потому что, когда я это делаю, я получаю кучу нулей в базе данных.Мой вопрос действительно сводится к двум вещам: что эффективно происходит в моем первом примере со случаем «если», когда значение не найдено?Результат undefined?Что я мог бы использовать в примере троичного синтаксиса для эффективной записи той же условной проверки - вплоть до того, что передается, когда значение не существует?

Будет ли это эквивалентным выражением для моего первого примера?

staffProfile.hireDate = data_hireDate ? data_hireDate : undefined;

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

1. "Что эффективно происходит в моем первом примере со случаем" если ", когда значение не найдено? Является ли результат undefined?"

Да, это будет undefined, если условие не будет выполнено, а свойство объекта не будет создано и ему ничего не назначено:

const data = {};
const staffProfile = {};

if (data.hire_date) staffProfile.hireDate = data.hire_date;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);

2. "Что можно использовать в примере троичного синтаксиса для эффективной записи той же условной проверки - вплоть до того, что передаетсякогда значение не существует? "

Таким образом, вы можете достичь абсолютно одинакового результата:

const data = {};
const staffProfile = {};

data.hire_date ? staffProfile.hireDate = data.hire_date : null;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);

И не так (оно станет null в этом случае):

const data = {};
const staffProfile = {};

staffProfile.hireDate = data.hire_date ? data.hire_date : null;

console.log("data:", data);
console.log("staffProfile.hireDate:", staffProfile.hireDate);
0 голосов
/ 13 октября 2018

, если date_hireDate выходит, он будет назначен staffProfile.hireDate.Ниже приведен синтаксис, который вы хотите.

staffProfile.hireDate = data_hireDate && data_hireDate

Однако это не имеет смысла.date_hireDate перед && оператором должно быть условие типа date_hireDate === something.

...