Использование троичных выражений при запуске ETL из Sybase в MongoDB - PullRequest
0 голосов
/ 17 октября 2018

Я использую ETL для извлечения данных из sybase в среду MongoDB.Первоначально мой ETL-дизайн для значения выглядел так:

hireDate: data.hire_date ? data.hire_date : null

Но, хотя это работает, он также заполняет ноль в базе данных, когда значение не существует в исходном документе.

Будет работать условное выражение длинной формы, например:

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

Но я бы хотел сделать это как можно более кратким и использовать троичное выражение для обработки этого в одной и той же строке кода.где я присваиваю значение.

Теперь, так как я не хочу заполнять базу данных нулями, я пытаюсь использовать троичные выражения таким образом, чтобы просто пропустить поле doc, еслиэто undefined, как то, что происходит в условном выражении «если», приведенном выше.Однако то, что я попробовал, не работает.Мои ошибки ETL, когда документ содержит значение undefined.Вот соответствующий раздел кода, который я пробовал:

Staff.findOneAndUpdate(
  {
    legacyId: data.id_number
  },
  {
    $set: {
      staffProfile: {
        hireDate: data.hire_date ? (hireDate = data.hire_date) : null,
        vtrNum: data.vtr_num ? (vtrNum = data.vtr_num) : null
      }
    }
  },
  {
    returnNewDocument: true
  }
);

Что мне здесь не хватает?Есть ли способ выполнить эту оценку и задание в одной строке, как я пытаюсь сделать здесь?

...