mysql - 用于 NodeJS 的 Mysql 未在查询中扩展数组
问题描述
我正在使用 NodeJS 和 npm 的mysql包。我无法按 ID 从数据库中选择特定行。我正在使用一个简单的 WHERE id IN (...) 查询,并将 ids 作为数字数组传递。
根据文件,
数组变成列表,例如 ['a', 'b'] 变成 'a', 'b'
所以我编写了这段代码来调试它生成的 SQL:
console.log(ids);
console.log(this.connection.format(
"SELECT `invitations`.* FROM `invitations` WHERE `invitations`.`id` IN (?)",
ids
));
我希望首先看到一个 id 列表,然后是这些 id 在查询的 IN 部分中的 SQL 语句。
但是,查询中只存在第一个 id:
console.log tests/fakers/InvitationFaker.ts:70
[ 207, 208 ]
console.log tests/fakers/InvitationFaker.ts:71
SELECT `invitations`.* FROM `invitations` WHERE `invitations`.`id` IN (207)
为什么查询看起来不像这样:
... WHERE `invitations`.`id` IN (207, 208)
?
解决方案
尝试将 id 转换为字符串,在 id 之间使用 ","
this.connection.format(
"SELECT `invitations`.* FROM `invitations` WHERE `invitations`.`id` IN (?)",
ids.join(",")
));
推荐阅读
- reactjs - 如何在不导入整个 Font Awesome 包的情况下使用图标名称作为字符串导入 Font Awesome 图标?
- azure - 应用程序网关前面的 Azure 前门
- javascript - 使用 vuex 从另一条路由访问本地存储中的数据
- c# - 在 C# 中的 SQL CLR 函数中设置小数精度
- python - Spark:如何将元组转换为 DataFrame
- linux - 如果文件描述符关闭,Linux write() 会使应用程序崩溃
- javascript - 如何在 li 标记中添加?
- go - Gorilla mux REST api 在使用带有双斜杠的 POST 时出现 405 错误,但仍然可以使用 GET
- java - 请求字段的 Java 注释
- python - 拆分熊猫