@zifmezin

Как сохранить записи в БД в цикле на node.js?

Получаю массив данных. Есть задача - сохранить в базу mysql полученные значения. При этом поле в БД является уникальным, поэтому нужно пропускать дубликаты и сохранять следующие уникальные значения. Но никак не могу сладить с асинхронностью в циклах и промисами. Что я делаю не так?

let data = [['val1'], ['val2']];

const queryStart = (item) => {
    const sql = `INSERT INTO domain (domain) VALUES ${item}`;
    return new Promise((res, rej) => {
      connection.query(sql, (error, result) => {
        if(error.code == "ER_DUP_ENTRY") return rej(new Error('Такая запись уже есть'));
        return res(result);
      });
    });
}

for(var item for data) {
  queryStart(item).then(
    result => {
      console.log(result)
      process.exit();
    },
    error => {
      console.log(error)
      process.exit();
    }
  );
}
  • Вопрос задан
  • 281 просмотр
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Во-первых в NodeJS, удалите дубликаты из массива.
Во-вторых на уровне базы данных объявите уникальные ключи.

И дапребудет с Вами ASCID
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы