在 mysql table 中插入一个 json 数组
insert a json array in a mysql table
使用 mysql2 我正在解析来自端点的 json 响应并将它的一些值插入到 mysql 数据库中。
我现在要做的是将此响应记录到我的数据库的 table 中。我收到的 json 在一个名为 data
的变量中,我可以正确访问它的值,例如 data.object.account_country
等等。
data
是一个有效的 json 像这样(为了隐私而修剪):
{
"object": {
"id": "in_1IYxloLuHwfLSa62Zjqz5jX5",
"object": "invoice",
"account_country": "IT",
}
}
现在我想将整个 json 存储在 mysql 的日志 table 中,所以我在 table 中创建了一个 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`);
});
这将引发以下错误:
{ Error: Invalid JSON text: "Invalid value." at position 1 in value for column 'webhook_log.risposta'.
我也尝试删除数据周围的单引号,但在这种情况下我得到:
{ Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[object Object], created_on=now()' at line 1
显然我在这里做错了什么,但我无法发现错误。
根据上面的评论,答案是使用 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); });
使用 mysql2 我正在解析来自端点的 json 响应并将它的一些值插入到 mysql 数据库中。
我现在要做的是将此响应记录到我的数据库的 table 中。我收到的 json 在一个名为 data
的变量中,我可以正确访问它的值,例如 data.object.account_country
等等。
data
是一个有效的 json 像这样(为了隐私而修剪):
{
"object": {
"id": "in_1IYxloLuHwfLSa62Zjqz5jX5",
"object": "invoice",
"account_country": "IT",
}
}
现在我想将整个 json 存储在 mysql 的日志 table 中,所以我在 table 中创建了一个 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`);
});
这将引发以下错误:
{ Error: Invalid JSON text: "Invalid value." at position 1 in value for column 'webhook_log.risposta'.
我也尝试删除数据周围的单引号,但在这种情况下我得到:
{ Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[object Object], created_on=now()' at line 1
显然我在这里做错了什么,但我无法发现错误。
根据上面的评论,答案是使用 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); });