javascript - 如何使用反引号在 node.js 中编写多行 MySQL 查询?

标签 javascript mysql sql node.js express

我在尝试在我的 node.js 应用程序中编写 MySQL 查询时遇到问题。在编写大型查询时,我需要将代码拆分成多行,因此我需要使用反引号来编写 JavaScript 字符串。重点是在我的 MySQL 查询中,我还需要使用反引号作为查询的一部分,如下所示:

SELECT `password` FROM `Users`

所以在 node.js 中执行查询的代码应该是这样的:

database.query(`
  SELECT `password` 
  FROM `Users`
`);

但代码不起作用,因为查询的反引号被解释为字符串文字的反引号。我可以像这样使用单引号或双引号连接几个字符串文字:

database.query( 
  'SELECT `password` ' +
  'FROM `Users`'
);

但我试过了,它很快就变得一团糟。 我还尝试使用一种不同的方法,使用特殊的字符作为反引号替换,并使用 replaceAll() 函数将其替换为反引号,如下所示(受 MSSQL 启发):

`SELECT [password]
FROM [Users]`.replaceAll('[', '`').replaceAll(']', '`');

所以我的问题是:有没有办法在不转义查询反引号或不连接多个单引号或双引号字符串文字的情况下编写多行 MySQL 查询?

最佳答案

我宁愿在我的 MySQL 查询中不使用反引号。如果您仍然需要在表名周围加上引号,您可以尝试设置 ANSI_QUOTES 以允许使用 " instaead : https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes

如果这不起作用,您可能更愿意转义反引号:Template literals with nested backticks(`) in ES6

关于javascript - 如何使用反引号在 node.js 中编写多行 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000550/

相关文章:

mysql - 如何选择(计数+分组依据)和加入

mysql升级(5.0.45到5.1.42)报错

javascript - Mysql OR 语句使用 AJAX 返回数组中的所有行名称值,然后在 Google Maps API V3 中加载多个标记

c# - SQL Server存储过程读取数据表的方法

sql - 使用WHERE到其他表的UPDATE SQL表

javascript - 如何不将 skrollr js 属性应用于另一个 div 中的 div?

javascript - NodeJS、Express、Jade POST JSON 到数据库

javascript - 以编程方式删除 Spotify 播放列表

javascript - 如何找出何时通过嵌入标签加载 PDF

java - 使用PreparedStatement时出现com.mysql.jdbc.exceptions.MySQLSyntaxErrorException