如何在 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变量的可能值,你可能会逃脱而不逃避;如果不这样做,最好也明确指定架构。