我是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'作为表的列。
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
我对mySql了解不多,但是使用postgresSql数据库时出现了类似的错误,这似乎是某种解析错误,为什么不尝试将json对象解析为执行JSON.stringify(externalExtra)
的字符串