PG-promise:支持多态类型



我有以下多态函数:

CREATE OR REPLACE FUNCTION check_value_existence(
p_value anynonarray,
p_column_name information_schema.sql_identifier,
p_table_name name,
p_schema_name information_schema.sql_identifier DEFAULT 'public'::character varying)
RETURNS boolean AS
$BODY$
...
$BODY$
LANGUAGE plpgsql

我这样称呼它:

db.func("check_value_existence", [account.username, "username", "account", "customer"])
.then(found => { ...})
.catch(error => {...});

但我收到以下错误:

could not determine polymorphic type because input has type unknown

当我通常调用函数时,我总是在需要时使用类型转换::text用于p_value;例如:

SELECT check_value_existence('username_1'::text, 'username', 'account', 'customer');

我怀疑 pg-promise 不支持多态类型,是吗?

蒂亚

方法 func 仅用于支持最简单的方案,不需要任何类型转换。如果确实需要类型强制转换,则不要使用它,而是使用标准查询和强制转换。

对于返回单个值的函数,您可以使用:

db.one('SELECT * FROM check_value_existence($1::text, $2, $3, $4)', [account.username, 'username', 'account', 'customer'])
.then(data => {
// data
})
.catch(error => {
// error
})

我怀疑 pg-promise 不支持多态类型,是吗?

这无关紧要。该库只是使用您在查询中指定的任何类型执行查询。

最新更新