Вставить массив (объектов) в базу данных mysql - PullRequest
0 голосов
/ 27 апреля 2020

Я получил то, что хотел, просто вставив внутри 2 цикла for, но я чувствовал, что лучше сделать одну вставку после выполнения l oop.

Что я попробовал:

1: вставить массив объектов -> вставить только 1-й объект в массив

  let itemsToDb = [];
  for (let i = 0; i < stashes.length; i++) {
    for (let j = 0; j < stashes[i].items.length; j++) {
      let item = stashes[i].items[j];
      let itemToDb = {
        item_id: item.id,
        verified: item.verified,
        icon: item.icon,
        name: item.name,
        typeline: item.typeLine,
        identified: item.identified,
        ilvl: item.ilvl,
        note: item.note,
        frametype: item.frameType,
        inventory_id: item.inventoryId,
        corrupted: item.corrupted,
        date: new Date().toJSON().slice(0, 19).replace('T', ' ')
      };
      itemsToDb.push(itemToDb);
    }
  }
  let sql = 'INSERT INTO items SET ?';
  db.query(sql, itemsToDb, (error) => {
    if (error) console.log(error);
    console.log(itemsToDb); //item added!
  });

2: вставить массив массивов - > Ошибка (см. Ниже)

  let itemToDb = [
    item.id,
    item.verified,
    item.icon,
    item.name,
    item.typeLine,
    item.identified,
    item.ilvl,
    item.note,
    item.frameType,
    item.inventoryId,
    item.corrupted,
    new Date().toJSON().slice(0, 19).replace('T', ' ')
  ];

ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''45580327d5e9aa29bac9f4461029acd59c379006cdd622a6290ce28bff3496ee', false, 'http' at line 1

Структура базы данных выглядит следующим образом: enter image description here

1 Ответ

1 голос
/ 27 апреля 2020

В сообщении parse_error вы можете увидеть, что значения не имеют имен столбцов. Я не знаю точно о параметрах объекта в модуле mysql узла. При чтении sql сообщения об ошибке вы пытаетесь ВСТАВИТЬ с ЗНАЧЕНИЯМИ, НЕ УСТАНОВЛЕННЫМИ:

INSERT INTO items (`item_id`, `verified`, `icon`, `name`, `typeline`, `identified`, `ilvl`, `note`, `frametype`, `inventory_id`, `corrupted`, `date`) VALUES ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...