将json插入nodejs中的mysql行

时间:2016-09-07 19:22:58

标签: mysql json node.js

我是Node.js的新手,我正在开发一个连接各种外部API进行交易的程序。

API返回一个我想要完全存储在MySQL数据库列中的JSON。我不想为返回的每个数据创建一个列,因为这意味着我将不得不为每个不同的JSON响应创建不同的行,而这是不可扩展的。

我还希望将它们保存为JSON,因为它们很容易在查询和代码中处理。所以在我的数据库中,我有一个表,用于存储外部事务信息和external_extra列,我想存储JSON对象。

我的代码

connection.acquire(function(err, con) {
        console.log('inserting: ' + [transactionId, externalReference,
                externalTransactionStatus, externalExtra]);
        con.query('insert into external_transaction (transaction, external_reference, status,' +
            'external_extra) ' +
            'values (?,?,?,?)', [transactionId, externalReference,
            externalTransactionStatus, externalExtra],
            function(err, result) {
                con.release();
                if(err) console.log(err);
                cb(result.insertId);
            });

其中externalExtra是从API收到的JSON。运行该代码会给我一个错误,因为它使用JSON向插入添加更多字段而不是插入json。示例:如果json具有如下结构:

{ 
  type: 'internal_transaction',
  address: 'rDLwhx2M9YfbNfZWDq5opJMttQjh7xtvh5',
  sequence: 42,
  id: 98,
  specification: 'created with rrDL55JshyMtlIU sequence'
}

我收到错误:错误:

  

ER_BAD_FIELD_ERROR:'字段列表'中的未知列'type',因为它将'type'作为表的列。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我对mySql了解不多,但是使用postgresSql数据库时出现了类似的错误,这似乎是某种解析错误,为什么不尝试将json对象解析为执行JSON.stringify(externalExtra)的字符串