Mysql for NodeJS 不在查询中扩展数组

标签 mysql node.js

我正在使用 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/

相关文章:

MySQL语句错误使用 'Limit'

php - MySQL 在删除后继续添加 2 个额外的行!

javascript - 使用 Node.js 在 html 表中显示 mysql

mysql - 无法以同步模式运行 Mocha.js

node.js - nodemon 给出此错误代码 : 'EADDRINUSE' , errno : -4091, syscall : 'listen' , 地址 : '::' , 端口:5000

node.js - 游标.sort()和聚合$sort之间的区别

mysql - 选择多次出现且其中任何一个满足另一个条件的记录

mysql - 日期范围内的记录 - 性能

mysql - 如何将大型 csv 文件导入 mysql?

node.js - 304 Not Modified When If-None-Match 有效