在mysql表中插入一个json数组



我使用mysql2解析来自端点的json响应,并将其一些值插入到mysql数据库中。我现在想做的是将此响应记录在数据库的表中。我收到的json在一个名为data的变量中,我可以正确地访问它的值,比如data.object.account_country等等

data是一个有效的json,如下所示(出于隐私考虑进行了修剪(:

{
"object": {
"id": "in_1IYxloLuHwfLSa62Zjqz5jX5",
"object": "invoice",
"account_country": "IT",
}
}

现在我想将整个json存储在mysql的日志表中,所以我在表中创建了一个json列,并尝试插入json。

我的查询如下:

con1.query("INSERT INTO webhook_log SET tipo='"+eventType+"', risposta='"+data+"', created_on=now()",function(err,result){
if(err) throw err;
console.log(`🔔  Webhook logged`);
});

这会引发以下错误:

{错误:无效的JSON文本:"无效值。"位于列"webhook_log.resposta"值的位置1。

我也尝试删除数据周围的单引号,但在这种情况下,我得到了:

{错误:您的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,在第1行的"[object object],created_on=now(("附近找到正确的语法

很明显我做错了什么,但我无法发现错误。

根据上面的注释,答案是使用JSON.stringify将Javascript对象转换为JSON字符串。

还要使用SQL查询参数。一旦你掌握了窍门,它实际上比串接和平衡所有引号更容易。

con1.query("INSERT INTO webhook_log SET tipo=?, riposta=?, created_on=now()",
[eventType, JSON.stringify(data)],
function(err,result){ if(err) throw err; console.log(🔔  Webhook logged); });

最新更新