Записи не вставляются - mySql Узел - PullRequest
0 голосов
/ 26 мая 2020

Задача

Я пытаюсь прочитать все записи из одной таблицы и вставить их в другую таблицу. Позже я повторно использую эти функции в приложении.

Проблема

Кажется, что данные передаются неправильно. Я не получаю никаких ошибок, но записи не вставлены.

Я отладил переменную data, и все записи корректно обрабатываются. По какой-то причине я теряю их, когда вызываю свою функцию insertData.

Примечание : имя моей таблицы results, что может немного сбивать с толку. Я могу изменить это в будущем.

Весь исходный код

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "marketplace"
});

connection.connect(function (err) {
    if (err) throw err;
    console.log("Connected!");
})


const getData = function (tblName) {

    var data = {};

    switch (tblName) {
        case "results":
            sql = "SELECT * FROM results";
            break;
        case "items":
            sql = "SELECT * FROM items";
            break;

        default:
            sql = "SELECT * FROM results";
            break;
    }

    return new Promise(resolve => {

        connection.query(sql, function (err, results) {
            if (err) {
                console.log(err);
            } else {
                data.numResults = results.length;
                data.data = results;
                resolve(data);
            }
        })

    })

}

const insertData = function (tbl, entity) {
    
    return new Promise(resolve => {        

        var sql = `INSERT INTO ${tbl} (title,price,location,miles,imgUrl,itemURL) VALUES ?`;
        var insertedIds = [];

        for (var i = 0; i < entity.length; i++) {
            connection.query(sql, entity[i], function (err, res) {
                if (err) throw err;
                insertedIds.push(res.insertId);
            });
        }

        resolve(insertedIds);
        
    })
  
}

const init = async function () {

    var data = await getData("items");   
    console.log(data);  // Works. Display all data

    var insertSuccess = await insertData("results", data);

   
}

init();

Структура данных


{
      id: 251,
      title: '2008 Jeep Wrangler Unlimited Sahara Sport Utility 4D',
      price: '$10,500',
      location: 'Lake Sarasota, Florida',
      miles: '123K miles',
      itemURL: '/marketplace/item/174406817245706/',
      imgUrl: 'https://scontent-mia3-1.xx.fbcdn.net/v/t1.0-0/c43.0.260.260a/p261x260/98434536_3577078698974198_8432375958719168512_n.jpg?_nc_cat=111&_nc_sid=843cd7&_nc_oc=AQlLn3CVPZmD4dKSsfXd-rV0WxXBo98zneuGAEgz2JP2yWrkt5rxI-fa1ShTtMGYbrw&_nc_ht=scontent-mia3-1.xx&oh=89e552882baeb14c642a1cd28b8ba683&oe=5EEA3991',
      seen: 0,
      created_date: 2020-05-20T20:45:24.000Z
    }

Схема


DROP TABLE IF EXISTS `results`;
CREATE TABLE IF NOT EXISTS `results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `price` varchar(255) DEFAULT NULL,
  `location` varchar(255) DEFAULT NULL,
  `miles` varchar(22) DEFAULT 'unavailable',
  `itemURL` text,
  `imgUrl` text,
  `created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=612 DEFAULT CHARSET=latin1;
COMMIT;

Вывод

Когда я пытаюсь console.log переменная insertSuccess, которая должна показать мне список вставленных идентификаторов:

.
.
.
console.log(insertSuccess);

Выходные результаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...