尝试使用自定义函数在 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"

您的列是否命名为 firstNamelastName

first_namelast_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.

的确切名称相匹配