NodeJS-将数据插入数据库时​​出现Mysql错误

时间:2019-02-16 13:36:19

标签: mysql node.js

我在nodeJS中得到了类似getItemPrice的函数。但是,在尝试插入数据时,发生了错误。无法在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)

3 个答案:

答案 0 :(得分:0)

我使用nodeJs中的参数语句解决了这个问题。如果数据中有特殊字符,则单次插入不起作用

答案 1 :(得分:0)

查询必须是字符串,因此要向其中注入一些变量,可以对模板字符串使用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);
    });
});

答案 2 :(得分:-1)

我建议您使用节点异步https://caolan.github.io/async/,将serieseachOfSeries一起使用