我正在使用 NodeJS 和 mysql来自 npm 的包。我在按 ID 从数据库中选择特定行时遇到问题。我正在使用一个简单的 WHERE id IN (...) 查询,并将 ID 作为数字数组传递。
根据文档,
Arrays are turned into list, e.g. ['a', 'b'] turns into '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)
?
最佳答案
尝试将ids转换为字符串,在ids之间加上“,”
this.connection.format(
"SELECT `invitations`.* FROM `invitations` WHERE `invitations`.`id` IN (?)",
ids.join(",")
));
关于Mysql for NodeJS 不在查询中扩展数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58492636/