使用Node.js在MySql2的JSON列中存储JSON对象

问题描述 投票:0回答:1

我有一个看起来像这样的JSON对象-

{
"questions": 
            [{
               "question_id": "1",
                "question": "Choose games you're currently playing",
                "answers":
                   [{ "answer_id" : "1", "answer": "game1", "checked": false },
                    { "answer_id": "2", "answer": "game2", "checked" : true }]
             },
             { 
               //...
             }]
}

我正在尝试使用MySql2将其存储在JSON列中。

我的查询-

const query = `INSERT INTO user_questions(_id, questions,created_at, updated_at, deleted) 
                VALUES(1, '${JSON.stringify(questions)}', NOW(), NOW(), 0)`;
const result = await db.query(query)

但是我收到以下异常错误-

UnhandledPromiseRejectionWarning: Error: You have an error in your SQL syntax;

我到底在做什么错?

Edit:我发现是由于问题中的撇号引起的。如果我尝试在没有查询的情况下运行查询,它将正常工作。

node.js json mysql2
1个回答
0
投票
您不应该使用直接插入来代替这种方法

const query = 'INSERT INTO user_questions(_id, questions,created_at, updated_at, deleted) values (?, ?, ?, ?, ?)'; const result = await db.query(query, [1, JSON.stringify(questions), NOW(), NOW(), 0)]);

可正确转义所有列:enter link description here
© www.soinside.com 2019 - 2024. All rights reserved.