如何使用 nodejs + pg 进行区分大小写的查询
How to make case sensitive query with nodejs + pg
如何使用nodejs + pg进行区分大小写的查询
我要select栏目内容=='a@gmail.com',
但它似乎变成了 select 列 == 'a@gmail.com'?
[error: column "a@gmail.com" does not exist]
代码
var userEmail = 'a@gmail.com';
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = "'+userEmail+'")';
dbClient.query(query, function(error, result) {
...
这与大小写无关。问题是您将电子邮件地址放在双引号中,并且在(大多数种类)SQL 双引号中表示列名或 table 名称。这就是错误消息显示 column "a@gmail.com" does not exist
.
的原因
在值周围使用单引号:
var userEmail = 'a@gmail.com';
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = \'' + userEmail + '\')';
不过,理想情况下,您应该只使用参数绑定,这样您根本不必担心引用值。当您使用字符串连接构建 SQL 查询时,您经常会面临 SQL 注入攻击。
要使用绑定参数,您必须从 </code> 开始编号(然后是 <code>
等等),然后将参数放入数组中:
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = )';
dbClient.query(query, [userEmail], function(error, result) {
始终以数组形式传递参数。是最安全的。
记住,如果你有一个非常大的 table,请不要传递一个函数来查询,除非你想在 returns 控件失效之前读取所有 table。否则你可以使用 "on" 事件或使用承诺方式(如 https://www.npmjs.com/package/pg-promise-strict)
如何使用nodejs + pg进行区分大小写的查询
我要select栏目内容=='a@gmail.com',
但它似乎变成了 select 列 == 'a@gmail.com'?
[error: column "a@gmail.com" does not exist]
代码
var userEmail = 'a@gmail.com';
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = "'+userEmail+'")';
dbClient.query(query, function(error, result) {
...
这与大小写无关。问题是您将电子邮件地址放在双引号中,并且在(大多数种类)SQL 双引号中表示列名或 table 名称。这就是错误消息显示 column "a@gmail.com" does not exist
.
在值周围使用单引号:
var userEmail = 'a@gmail.com';
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = \'' + userEmail + '\')';
不过,理想情况下,您应该只使用参数绑定,这样您根本不必担心引用值。当您使用字符串连接构建 SQL 查询时,您经常会面临 SQL 注入攻击。
要使用绑定参数,您必须从 </code> 开始编号(然后是 <code>
等等),然后将参数放入数组中:
var query = 'SELECT EXISTS(SELECT * FROM "User" WHERE "Email" = )';
dbClient.query(query, [userEmail], function(error, result) {
始终以数组形式传递参数。是最安全的。
记住,如果你有一个非常大的 table,请不要传递一个函数来查询,除非你想在 returns 控件失效之前读取所有 table。否则你可以使用 "on" 事件或使用承诺方式(如 https://www.npmjs.com/package/pg-promise-strict)