如何在 node-pg 中使用变量作为 table 名称?
How can I use a variable as the table name in node-pg?
例如我有这样的查询:
const rows = await db.query(
"SELECT * FROM WHERE email = AND password = ",
[tableName, email, password]
);
它给我一个语法错误。
这是不可能的,参数化查询仅适用于值(而不是文字),但不适用于 identifiers。您将需要构建 SQL 字符串:
const rows = await db.query(
`SELECT * FROM ${db.escapeIdentifier(tableName)} WHERE email = AND password = `,
[email, password]
);
(假设db
is a PgClient
)
如果你事先知道tableName
变量的可能值,你可能会逃脱而不逃避;如果不这样做,最好也明确指定架构。
例如我有这样的查询:
const rows = await db.query(
"SELECT * FROM WHERE email = AND password = ",
[tableName, email, password]
);
它给我一个语法错误。
这是不可能的,参数化查询仅适用于值(而不是文字),但不适用于 identifiers。您将需要构建 SQL 字符串:
const rows = await db.query(
`SELECT * FROM ${db.escapeIdentifier(tableName)} WHERE email = AND password = `,
[email, password]
);
(假设db
is a PgClient
)
如果你事先知道tableName
变量的可能值,你可能会逃脱而不逃避;如果不这样做,最好也明确指定架构。