Por ejemplo tengo una consulta como:
const rows = await db.query( "SELECT * FROM $1 WHERE email = $2 AND password = $3", [tableName, email, password] );Me da error de sintaxis.
Esto no es posible, las consultas parametrizadas solo funcionan para valores (en lugar de literales) pero no para identificadores . Deberá construir la cadena SQL:
const rows = await db.query( `SELECT * FROM ${db.escapeIdentifier(tableName)} WHERE email = $1 AND password = $2`, [email, password] ); (Suponiendo que el db es un PgClient )
Si conoce los posibles valores de la variable tableName de antemano, puede salirse con la suya sin escapar; si no lo hace, es mejor que también especifique el esquema explícitamente.