mysql - 在 MySQL 数据库 Nodejs 中存储 JSON 数组
问题描述
我想在数据库中存储用户知道的语言数组。
我的代码:
router.post('/create-user', async (req, res) =>{
const query = `INSERT INTO users(name, languages, created_at, updated_at, deleted)
VALUES ('${name}', ${languages}, NOW(), NOW(), 0)`;
const result = await db.query(query);
// rest of code..
});
languages
我在类型的数据库中定义了一个列JSON
。
我在邮递员中调用这个 API body
:
{
"name" : "test",
"languages" : "['English', 'German']"
}
但我收到以下错误:
"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 'English', 'German'].
我该如何解决这个问题?
解决方案
您正在直接编写查询 - 这是非常糟糕的做法。而是使用:
const query = 'INSERT INTO users(name, languages, created_at, updated_at, deleted) VALUES (?, ?, NOW(), NOW(), ?)';
const result = await db.query(query, [name, language, 0]);
这将转义查询中的所有有问题的字符,您可以在此处阅读更多内容:https ://www.npmjs.com/package/mysql2#using-prepared-statements
推荐阅读
- java - maven 或 gradle 可以重新定位对导入的依赖吗?
- python - Python 设置帮助
- r - 使用 inspect() 报告的 Lavaan 不合理矩阵
- android - 如何对在后台线程中运行的实时数据进行单元测试?
- xcode - “MKAnnotationView”类型的值没有成员“pinTintColor”?
- c# - 使用 C# 编程时在 Visual Studio IDE 中创建控制事件
- c# - Excel自定义格式的DataTable导入问题
- javascript - 如何获取img元素的动态高度?
- .htaccess - 删除“WWW”和“.html”并仅重定向到 https
- sql - 显示以数字结尾的表名 | sql | 甲骨文 |