Postgresql postgraphile-用于在变异时将结构化数据添加为字段的函数
我想做一件最简单的事情,将结构化数据添加到图后突变中Postgresql postgraphile-用于在变异时将结构化数据添加为字段的函数,postgresql,plpgsql,postgraphile,Postgresql,Plpgsql,Postgraphile,我想做一件最简单的事情,将结构化数据添加到图后突变中 query MyQuery { myTables { nodes { id theBox } } } 我有一个简单的示例表: > \d test1.my_table
query MyQuery {
myTables {
nodes { id theBox }
}
}
我有一个简单的示例表:
> \d test1.my_table
+----------+--------+
| Column | Type |
|----------+--------+
| id | uuid |
| the_box | box |
+----------+--------+
框
列通过postgraphile创建一种类型的{kind:“SCALAR”,name:“String”,of type:null}
,这让我可以解析查询结果,并将数据封送到字符串中进行变异
query MyQuery {
myTables {
nodes { id theBox }
}
}
屈服
{
"data": {
"myTables": {
"nodes": [
{
"id": "c79ee287-88ca-4950-a44b-e4ef07d3c3dc",
"theBox": "(3,4),(1,2)"
}
]
}
}
}
对于polygon
或bytea
类型,也会发生类似的情况
在我的理想世界中,我为查询编写了一个函数,它将返回框
(或多边形
,或bytea
)作为某种自定义postgres类型
CREATE TYPE box_arg AS (x point, y point);
CREATE OR REPLACE FUNCTION test1.my_table_box_for_query(the_row test1.my_table)
RETURNS box_arg AS $$
BEGIN
SELECT '(the_row.the_box[0][0], the_row.the_box[1][0])'::point,
'(the_row.the_box[0][1], the_row.the_box[1][1])'::point;
END;
$$ LANGUAGE 'plpgsql' STABLE;
(撇开我是否在该查询中选择了正确的x/y不谈……)
然而,我似乎不知道另一个方向。如何编写一个函数,该函数在postgraphile为my_table
创建的变异中公开,该变异将接受结构化数据(例如,上面的box_arg
类型),并让函数在变异期间用函数参数中的值更新记录?我想将框_arg
类型作为突变的输入。实际上,您可以在这里看到,该框仅作为字符串在输入中可用
使用postgres函数是否可以实现这一点?或者这只能通过postgraphile插件实现
非常感谢您提供的任何建议/示例 很确定有一个简单的解决方案。但我看不出明确的问题。这个函数到底应该做什么?(不要以为我们知道关于博士后的任何事情,我们大多数人都不知道。)对不起——我想你确实需要知道一点关于博士后的事情,这个问题才有意义。Postgraphile对您的postgres数据库进行内省,并自动构建graphql服务器。如果您以某种方式命名postgres函数,它将自动添加graphql接口启示。我正在寻找magic postgres函数,它为我的自动生成的变异创建一个box\u arg
类型的数据结构。对不起,我仍然不知道你在问什么。我已经试过了…谢谢你的关注,欧文,非常感谢。我认为问题在于这是一个专门关于postgraphile应用程序的问题(它与postgres紧密相连,因此是postgres标记)。我道歉,再次感谢!很确定有一个简单的解决方案。但我看不出明确的问题。这个函数到底应该做什么?(不要以为我们知道关于博士后的任何事情,我们大多数人都不知道。)对不起——我想你确实需要知道一点关于博士后的事情,这个问题才有意义。Postgraphile对您的postgres数据库进行内省,并自动构建graphql服务器。如果您以某种方式命名postgres函数,它将自动添加graphql接口启示。我正在寻找magic postgres函数,它为我的自动生成的变异创建一个box\u arg
类型的数据结构。对不起,我仍然不知道你在问什么。我已经试过了…谢谢你的关注,欧文,非常感谢。我认为问题在于这是一个专门关于postgraphile应用程序的问题(它与postgres紧密相连,因此是postgres标记)。我道歉,再次感谢!