Node.js - mysql:错误字段错误

时间:2018-01-24 18:38:37

标签: mysql node.js async.js

我解析一个大的csv并将每行插入到我的mysql表中。

解析后,我做了很多计算和转换,并将其保存到新的对象

  obj.push({                                                         
   "ID": value.id,
   "col1": value.calc1,
   ... });

在Object完成后,我做了:

async.forEach(obj, function (Insertobj, callback) {

 var query = conn.query('INSERT INTO table SET ?', Insertobj);

  },function (err){ 
      if (err) {                                                     
        console.log(err);                                             
        console.log('failed to process');
 }}

在浏览obj之后我得到=>

Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'field list'..

但他将完整的对象插入我的桌子!我没有任何名为NaN或空cols的列。我该怎么调试呢?我尝试将console.log设置为err.sql,但他打印" undefined"。使用debug:连接中的true并没有帮助我。

1 个答案:

答案 0 :(得分:0)

我认为您误解了如何使用节点js模块转义mysql值。该错误是由于您未指定要更新的列。除此之外,应使用数组而不是对象填充转义值。值按顺序在查询中转义。您的代码可能如下所示:

    valuesarray.push([                                                         
       value.id,
       value.calc1
    ]);

    async.forEach(valuesarray, function ( insertarray, callback ) {

        var query = conn.query('INSERT INTO table SET ID = ?, col1 = 
        ?', insertarray);

    },function (err){ 
        if (err) {                                                     
            console.log(err);                                             
            console.log('failed to process');
        }
    });