尝试使用自定义函数在 Hasura 中创建计算字段
Trying to create computed field in Hasura with a custom function
我正在尝试将 Hasura Computed Fields 与 table 调用的玩家一起使用,以合并 firstName 和 lastName 列。下面是我复制和更改文档中显示的示例。
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row.firstName || ' ' || player_row.lastName
$$ LANGUAGE sql STABLE;
Returns 出现以下错误:
SQL Execution Failed
postgres-error : missing FROM-clause entry for table "player_row"
您的列是否命名为 firstName
和 lastName
?
将 first_name
和 last_name
作为 players
table 中的列,我能够重现错误 w/the 函数共享。
我相信您的选择是重命名列 first_name --> firstName 和 last_name --> lastName 或将全名函数定义为:
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row.first_name || ' ' || player_row.last_name
$$ LANGUAGE sql STABLE;
顺便说一句,它可能与你的问题没有直接关系,但是对于 postgres,只要你有列名,如果有任何大写,它需要你引用你的字段,所以在这种情况下你需要以下功能:
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row."firstName" || ' ' || player_row."lastName"
$$ LANGUAGE sql STABLE;
注意列名周围的双引号,postgres 自动将所有列小写,我相信这就是为什么 hasura 在他们的示例中选择蛇形大小写的原因。
另外我注意到你在函数 player_row players
中引用了,确保末尾的 players
部分与你的 table.
的确切名称相匹配
我正在尝试将 Hasura Computed Fields 与 table 调用的玩家一起使用,以合并 firstName 和 lastName 列。下面是我复制和更改文档中显示的示例。
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row.firstName || ' ' || player_row.lastName
$$ LANGUAGE sql STABLE;
Returns 出现以下错误:
SQL Execution Failed
postgres-error : missing FROM-clause entry for table "player_row"
您的列是否命名为 firstName
和 lastName
?
将 first_name
和 last_name
作为 players
table 中的列,我能够重现错误 w/the 函数共享。
我相信您的选择是重命名列 first_name --> firstName 和 last_name --> lastName 或将全名函数定义为:
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row.first_name || ' ' || player_row.last_name
$$ LANGUAGE sql STABLE;
顺便说一句,它可能与你的问题没有直接关系,但是对于 postgres,只要你有列名,如果有任何大写,它需要你引用你的字段,所以在这种情况下你需要以下功能:
CREATE FUNCTION player_full_name(player_row players)
RETURNS TEXT AS $$
SELECT player_row."firstName" || ' ' || player_row."lastName"
$$ LANGUAGE sql STABLE;
注意列名周围的双引号,postgres 自动将所有列小写,我相信这就是为什么 hasura 在他们的示例中选择蛇形大小写的原因。
另外我注意到你在函数 player_row players
中引用了,确保末尾的 players
部分与你的 table.