问题标签 [postgraphile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
264 浏览

javascript - Graphql 创建 2 个具有 1 个突变的条目

我以前没有遇到过这种情况,但只需 1 个突变就会创建 2 个条目:

方案.json:

突变前的数据:

突变:

变量

突变后的数据:

我在 graphiql 中执行这些查询:

在此处输入图像描述

0 投票
1 回答
317 浏览

postgresql - Postgraphile:只需要函数中的一些参数

当我在 Postgresql 中编写函数时,我可以添加严格,从而导致 Graphql 中需要所有参数(!),如果没有严格,所有参数都是可选的。

在非严格函数中的必填字段上,我可以抛出异常或简单地返回 null 而无需执行函数,就像参数为 null 时严格函数所做的那样。但是我怎样才能告诉 Postgraphile 需要哪些参数呢?通过注释或其他内容,或将具有默认值的参数标记为可选。

0 投票
1 回答
657 浏览

postgresql - 用于从 PostgreSQL 表中过滤/聚合结果的 GraphQL 查询结构

我是 GraphQL 的新手,我正在努力理解如何以与处理普通 SQL 查询相同的逻辑方式访问/引用表。我为 postgres 创建了一个 docker 容器,并使用一个简单的数据表初始化了数据库。

为了创建表,我在我的\init目录中运行了它。(运行 Windows 顺便说一句)

在 GraphiQL 中,我可以使用以下查询简单地选择所有内容:

我想运行可以垂直和水平聚合的东西,例如sum(losses) as total_lossesor (wins / (wins + losses + ties)) as win_ratio。我不确定如何使用 GraphQL 处理这两种情况。我还需要在某些条件下进行查询,但是将列名作为参数传递给node似乎不起作用,即node(team: "Chiefs")返回一个关于类型的错误allNfls

是否可以在 GraphQL 中引用这样的 Postgres 表?

0 投票
1 回答
65 浏览

graphql - 模式中的 Postgraphile 更改字段案例

postgraphile即使数据库字段是驼峰式(即customerName=> ) ,有没有办法使模式中的所有字段都小写customername

0 投票
1 回答
447 浏览

javascript - 扩展 GraphQL 过滤器定义

我已经扩展了我的 graphql 模式以添加总计解析器,但我似乎无法扩展过滤器以过滤此字段。我不知道有什么问题,因为它看起来很简单,所以可能不支持?我正在使用带有 makeExtendSchemaPlugin 的 Postgraphile,但我相信问题是基本的 graphql 语法。

这看起来很简单。计数解析器工作,并告诉我笔记中有多少行,但我无法对其进行过滤。我不想将过滤器逻辑放在 lines 属性本身中。如果我定义一个新查询并给它一个 NoteFilter,过滤器存在但不包括我的扩展属性(行)。有人知道我在做什么错吗?这是我想要查询的最终目标:

0 投票
1 回答
168 浏览

graphql - Postgraphile 的现场授权级别

目前,我正在使用 Postgraphile,我需要在数据/字段级别强制执行权限。

例如,我有一个汽车模型表,我的查询类似于:

好吧,在这张表中,我有 ids (1 = AUDI, 2 = GM, 3 = BMW) 当前用户(在角色/声明上)只有查看权限(1=AUDI/3=BMW)

有没有办法根据字段数据强制执行权限?并且只返回根据用户权限过滤的数据?

0 投票
1 回答
263 浏览

graphql - Apollo Federation:Federation 是否取代了 delegateToSchema?

简短版:我可以使用 Apollo Federation 来替换 的功能delegateToSchema,如果可以,如何?这个想法是重用来自另一个黑盒服务的解析器逻辑。

长版

我已经在互联网上搜索了几个小时,试图弄清楚如何在不明确编写新解析器的情况下合并两个服务。Apollo 含糊地说你可以从模式拼接迁移到联邦,但是考虑这个例子:

我正在使用 PostGraphile 将我的数据库转换为 GraphQL 模式,其中包含所有必要的 CRUD 解析器。已经有一个查询,我可以使用它获取特定用户的照片:

这存在于我将其视为黑匣子的另一项服务中。手动编写一个新的解析器并不理想(或容易),特别是因为数据在那里,我只需要告诉 Apollo 如何获取它。我想也许我可以使用delegateToSchema

但从我在文档和文章中看到的情况来看,这是模式拼接,应该被联邦取代。理想情况下,如果可能的话,我只想使用联合来实现这一点。可能吗?文档没有说清楚,我看到的每个联邦示例仍然需要您编写自定义解析器。就好像指令只是给出提示以确保您在解析器中具有正确的字段,而不是实际执行任何逻辑。

任何帮助表示赞赏!

0 投票
1 回答
94 浏览

sql - 在插入之前在 SQL 中设置本地配置

来自 JS 世界的 SQL 新手,需要有关触发器的一些建议。
我的用户有一个id列,我的 GraphQL API 总是调用INSERT INTO .... RETURNING *然后在 GraphQL 层上进行转换以返回我想要的。
目标是允许像INSERT INTO .... RETURNING *使用 RLS 一样进行查询。

这些政策是:

这对来宾用户(更多上下文在底部)来说是中断的,因为他们被允许INSERT但不能SELECT(因为只有授权用户才能选择他们自己的行的限制)。

所以我想在插入之前/之后以某种方式在触发器中手动设置用户设置(不知道是哪个,因为由于语法错误我无法前进)。

我已经尝试过了,但是在NEW.id? (它只是对我说“语法错误”)

搜索了很多,老实说,我想我可能找不到任何东西,因为我缺少正确的术语来找到我需要找到的东西。

不仅希望帮助您解决这个特定问题,还希望为需要特权的来宾用户提供有关政策的任何相关建议。

语境:

这些是相关的表格和功能

RLS 限制SELECT为表的iduser匹配的行current_setting('jwt.claims.userId')
这是由 Postgraphile 先前设置的,如此处所示 ( https://www.graphile.org/postgraphile/security/ )。

我想到的一种可能的解决方法是这样,但由于明显的角色提升,我不知道这是否会导致某种漏洞:

0 投票
0 回答
87 浏览

postgraphile - Postgraphile: multiple foreignkeys on same table with smart tags and postgraphile.tags.json5

NodeJS Project with apollo/postgraphile

I would like to add multiple virtual foreignkey on multiple tables with postgraphile Smart Tags using postgraphile.tags.json5

If i do this in postgraphile.tags.json5

Then only latest foreignKey tag will work.

How can i manage to add multiple foreignKey tag referencings columns from differents table ?

0 投票
1 回答
366 浏览

postgresql - 在 PostGraphile 中处理列级选择授权的最佳实践

PostGraphile 不推荐列级 SELECT grants,而是建议

将您的关注点拆分为多个表,并使用一对一的关系功能将它们链接起来。

现在我希望我的users表有一个role可以访问role_admin但不能访问的字段role_consumer。基于上述建议,我创建了两个表。users表(在公共模式中)包含两个角色都可以看到的所有字段,并且user_accounts(在私有模式中)包含role只有role_admin必须能够看到的字段。role字段通过计算列添加到userGraphQL 类型。

现在基本上我有两种药水来设置权限。

1)第一个选项是使用表级安全性。IOW 将表上的选择访问权限授予user_accountsONLY role_admin

这种方法的问题在于,当role_consumer运行包含role字段的查询时

上述查询返回错误。这不好,因为错误会影响隐藏其他同级字段结果的整个结果。

2) 另一个选项是使用除表级别之外的行级别安全性;IOW 在表级别,授予对表的选择访问权限user_accountsrole_adminrole_consumer在行级别仅允许管理员访问user_accounts.

现在,如果用户consumer_role运行上述查询,该role字段将为空,不会影响其兄弟字段。但是有两个问题:

  • 我们是否应该始终避免错误以防止它们影响兄弟姐妹?

  • 如果是,我们是否应该始终在行级别而不是仅在表级别处理事情?