问题标签 [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.
postgresql - Postgraphile:只需要函数中的一些参数
当我在 Postgresql 中编写函数时,我可以添加严格,从而导致 Graphql 中需要所有参数(!),如果没有严格,所有参数都是可选的。
在非严格函数中的必填字段上,我可以抛出异常或简单地返回 null 而无需执行函数,就像参数为 null 时严格函数所做的那样。但是我怎样才能告诉 Postgraphile 需要哪些参数呢?通过注释或其他内容,或将具有默认值的参数标记为可选。
postgresql - 用于从 PostgreSQL 表中过滤/聚合结果的 GraphQL 查询结构
我是 GraphQL 的新手,我正在努力理解如何以与处理普通 SQL 查询相同的逻辑方式访问/引用表。我为 postgres 创建了一个 docker 容器,并使用一个简单的数据表初始化了数据库。
为了创建表,我在我的\init
目录中运行了它。(运行 Windows 顺便说一句)
在 GraphiQL 中,我可以使用以下查询简单地选择所有内容:
我想运行可以垂直和水平聚合的东西,例如sum(losses) as total_losses
or (wins / (wins + losses + ties)) as win_ratio
。我不确定如何使用 GraphQL 处理这两种情况。我还需要在某些条件下进行查询,但是将列名作为参数传递给node
似乎不起作用,即node(team: "Chiefs")
返回一个关于类型的错误allNfls
是否可以在 GraphQL 中引用这样的 Postgres 表?
graphql - 模式中的 Postgraphile 更改字段案例
postgraphile
即使数据库字段是驼峰式(即customerName
=> ) ,有没有办法使模式中的所有字段都小写customername
?
javascript - 扩展 GraphQL 过滤器定义
我已经扩展了我的 graphql 模式以添加总计解析器,但我似乎无法扩展过滤器以过滤此字段。我不知道有什么问题,因为它看起来很简单,所以可能不支持?我正在使用带有 makeExtendSchemaPlugin 的 Postgraphile,但我相信问题是基本的 graphql 语法。
这看起来很简单。计数解析器工作,并告诉我笔记中有多少行,但我无法对其进行过滤。我不想将过滤器逻辑放在 lines 属性本身中。如果我定义一个新查询并给它一个 NoteFilter,过滤器存在但不包括我的扩展属性(行)。有人知道我在做什么错吗?这是我想要查询的最终目标:
graphql - Postgraphile 的现场授权级别
目前,我正在使用 Postgraphile,我需要在数据/字段级别强制执行权限。
例如,我有一个汽车模型表,我的查询类似于:
好吧,在这张表中,我有 ids (1 = AUDI, 2 = GM, 3 = BMW) 当前用户(在角色/声明上)只有查看权限(1=AUDI/3=BMW)
有没有办法根据字段数据强制执行权限?并且只返回根据用户权限过滤的数据?
graphql - Apollo Federation:Federation 是否取代了 delegateToSchema?
简短版:我可以使用 Apollo Federation 来替换 的功能delegateToSchema
,如果可以,如何?这个想法是重用来自另一个黑盒服务的解析器逻辑。
长版:
我已经在互联网上搜索了几个小时,试图弄清楚如何在不明确编写新解析器的情况下合并两个服务。Apollo 含糊地说你可以从模式拼接迁移到联邦,但是考虑这个例子:
我正在使用 PostGraphile 将我的数据库转换为 GraphQL 模式,其中包含所有必要的 CRUD 解析器。已经有一个查询,我可以使用它获取特定用户的照片:
这存在于我将其视为黑匣子的另一项服务中。手动编写一个新的解析器并不理想(或容易),特别是因为数据在那里,我只需要告诉 Apollo 如何获取它。我想也许我可以使用delegateToSchema
:
但从我在文档和文章中看到的情况来看,这是模式拼接,应该被联邦取代。理想情况下,如果可能的话,我只想使用联合来实现这一点。可能吗?文档没有说清楚,我看到的每个联邦示例仍然需要您编写自定义解析器。就好像指令只是给出提示以确保您在解析器中具有正确的字段,而不是实际执行任何逻辑。
任何帮助表示赞赏!
sql - 在插入之前在 SQL 中设置本地配置
来自 JS 世界的 SQL 新手,需要有关触发器的一些建议。
我的用户有一个id
列,我的 GraphQL API 总是调用INSERT INTO .... RETURNING *
然后在 GraphQL 层上进行转换以返回我想要的。
目标是允许像INSERT INTO .... RETURNING *
使用 RLS 一样进行查询。
这些政策是:
这对来宾用户(更多上下文在底部)来说是中断的,因为他们被允许INSERT
但不能SELECT
(因为只有授权用户才能选择他们自己的行的限制)。
所以我想在插入之前/之后以某种方式在触发器中手动设置用户设置(不知道是哪个,因为由于语法错误我无法前进)。
我已经尝试过了,但是在NEW.id
? (它只是对我说“语法错误”)
搜索了很多,老实说,我想我可能找不到任何东西,因为我缺少正确的术语来找到我需要找到的东西。
不仅希望帮助您解决这个特定问题,还希望为需要特权的来宾用户提供有关政策的任何相关建议。
语境:
这些是相关的表格和功能
RLS 限制SELECT
为表的id
列user
匹配的行current_setting('jwt.claims.userId')
。
这是由 Postgraphile 先前设置的,如此处所示 ( https://www.graphile.org/postgraphile/security/ )。
我想到的一种可能的解决方法是这样,但由于明显的角色提升,我不知道这是否会导致某种漏洞:
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 ?
postgresql - 在 PostGraphile 中处理列级选择授权的最佳实践
PostGraphile 不推荐列级 SELECT grants,而是建议
将您的关注点拆分为多个表,并使用一对一的关系功能将它们链接起来。
现在我希望我的users
表有一个role
可以访问role_admin
但不能访问的字段role_consumer
。基于上述建议,我创建了两个表。users
表(在公共模式中)包含两个角色都可以看到的所有字段,并且user_accounts
(在私有模式中)包含role
只有role_admin
必须能够看到的字段。role
字段通过计算列添加到user
GraphQL 类型。
现在基本上我有两种药水来设置权限。
1)第一个选项是使用表级安全性。IOW 将表上的选择访问权限授予user_accounts
ONLY role_admin
。
这种方法的问题在于,当role_consumer
运行包含role
字段的查询时
上述查询返回错误。这不好,因为错误会影响隐藏其他同级字段结果的整个结果。
2) 另一个选项是使用除表级别之外的行级别安全性;IOW 在表级别,授予对表的选择访问权限user_accounts
,role_admin
但role_consumer
在行级别仅允许管理员访问user_accounts
.
现在,如果用户consumer_role
运行上述查询,该role
字段将为空,不会影响其兄弟字段。但是有两个问题:
我们是否应该始终避免错误以防止它们影响兄弟姐妹?
如果是,我们是否应该始终在行级别而不是仅在表级别处理事情?