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。
我知道文档读到此参数必须是 string
或 QueryFile
。
基本上,我想做的是:
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.
在这个问题之后添加了官方文档中的注释,因为它之前出现过几次。希望从现在开始它会更加清晰。
我正在尝试在其 text
参数中使用 ParameterizedQuery
with SQL Names。
我知道文档读到此参数必须是 string
或 QueryFile
。
基本上,我想做的是:
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.
在这个问题之后添加了官方文档中的注释,因为它之前出现过几次。希望从现在开始它会更加清晰。