NodeJS - ошибка Mysql при вставке данных в базу данных

У меня есть такая функция, как getItemPrice в nodeJS. Но при попытке вставки данных возникает ошибка. Невозможно записать какое-либо динамическое значение внутри VALUES(item.Id, value.lowest_price).

Я пробовал много вещей, но ничего не работает.

con.query('SELECT game_item.id as itemId, steam_app_game.app_id as gameId, game_item.name, steam_app_game.id FROM steam_app_game LEFT JOIN game_item ON steam_app_game.id = game_item.app_game_id', function(err, rows, fields) {
var counter = 1;
rows.forEach(function (item,index) {
        setTimeout(function(){
            market.getItemPrice(item.gameId, item.name).then(function (value, err) {
                if (err) throw  err;
                var lowest = value.lowest_price
                con.query('INSERT INTO game_item_spec(game_item_id,price) VALUES (item.itemId,value.lowest_price )')
                counter ++;
            });
        }, index * 5000);
    });
});

Вот ошибка.

ER_BAD_FIELD_ERROR: Unknown column 'value.lowest_price' in 'field list'
at Query.Sequence._packetToError (F:\Xamp\htdocs\steam-trade-bot\node_modules\mysql\lib\protocol\sequences\Sequence.js:47
:14)
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я решил это, используя операторы параметров в nodeJs. Одиночная вставка в не работает, если данные содержат специальные символы

Я рекомендую вам использовать асинхронный узел https://caolan.github.io/async/, использовать ряд вместе с каждый из серий.

Запрос должен быть строкой, поэтому для ввода некоторых переменных внутри вы можете использовать синтаксис ES6 со строкой шаблона. Вот рабочий код:

con.query('SELECT game_item.id as itemId, steam_app_game.app_id as gameId, game_item.name, steam_app_game.id FROM steam_app_game LEFT JOIN game_item ON steam_app_game.id = game_item.app_game_id', function(err, rows, fields) {
var counter = 1;
rows.forEach(function (item,index) {
        setTimeout(function(){
            market.getItemPrice(item.gameId, item.name).then(function (value, err) {
                if (err) throw  err;
                var lowest = value.lowest_price
                con.query(`INSERT INTO game_item_spec(game_item_id,price) VALUES (${item.itemId}, ${value.lowest_price} )`)
                counter ++;
            });
        }, index * 5000);
    });
});

Другие вопросы по теме