pg-promise: SQL Names ~ or :name 似乎不适用于 ParameterizedQuery

pg-promise: SQL Names ~ or :name does not seem to work with ParameterizedQuery

我正在尝试在其 text 参数中使用 ParameterizedQuery with SQL Names

我知道文档读到此参数必须是 stringQueryFile

基本上,我想做的是:

import pgPromise from 'pg-promise';

const pgp = pgPromise();
const pq = new pgp.ParameterizedQuery({
      text: `
        SELECT :name from my_table
        where :name = ;
        `,
      rowMode: 'array'
    });
const params = {user_col: 'user', id_col: 'id', id_value: 'XXX'};
try {
  return await this.db.any(pq, Object.values(params));
} catch (e) {
  console.error(e);

  return e;
}

我得到的错误如下:

QUERY: {
[start:run]   text: '\n' +
[start:run]     '        SELECT :name from my_table\n' +
[start:run]     '        where :name = ;\n' +
[start:run]     '        ',
[start:run]   values: [ 'user', 'id', 'XXX' ],
[start:run]   rowMode: 'array'
[start:run] }
[start:run] error: syntax error at or near ":"

是否可以在 ParameterizedQuery 中使用 :name(或 ~)?问题是,我真的希望我的查询结果是行数组而不是行对象数组,ParameterizedQuery 的参数 rowMode 设置为 array 似乎是我能做到这一点的唯一方法。

来自 Formatting Filters 文档:

Note that formatting filters work only for normal queries, and are not available within PreparedStatement or ParameterizedQuery, because those are, by definition, formatted on the server side.

在这个问题之后添加了官方文档中的注释,因为它之前出现过几次。希望从现在开始它会更加清晰。