1

使用 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.risposta”列的值中的位置 1。

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

{ 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '[object Object], created_on=now()' 附近使用正确的语法

显然我在这里做错了,但我无法发现错误。

4

1 回答 1

2

根据上面的评论,答案是用来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); });
于 2021-04-07T15:07:52.657 回答