问题标签 [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 投票
0 回答
78 浏览

graphql - 带有批量查询的模式拼接 postgraphile 服务

我有两个目标:

  1. 在任何有趣的数据库上启动 postgraphile 服务
  2. 创建一个网关,将这些服务组合成一个仍然高性能的图形(具体来说,我对批量查询感兴趣)

从我所做的阅读来看,似乎有两种主要方法:

  1. 模式拼接来自graphql-tools
  2. 阿波罗联盟来自apollo-federation

我已经尝试过每一个,但我目前正在使用模式拼接方法。假设我有一个服务公开的用户和另一项服务公开的帖子:

现在假设我要查询所有用户并获取每个用户的帖子列表。如果这两者都是由同一个服务实现的,Postgraphile 将足够聪明地将请求批处理在一起。但由于他们在不同的服务中,我需要做一些工作来实现这一点:

  1. 在网关中,我需要将我的更新delegateToSchemabatchDelegateBySchema
  1. 在 postgraphile 服务上,我需要添加一个favoritesByUserIds解析器,它接收用户 ID 列表并返回每个用户的收藏夹

这很好用,但是对于我想要有效查询的类型之间的每一种关系,似乎需要做很多工作——我错过了什么吗?有没有更自然的方法来配置网关/postgraphile 子模式以自动处理查询批处理?

注意:我已经batch: true为网关和enableQueryBatching: truepostgraphile 服务上的每个子模式进行了配置。

0 投票
0 回答
64 浏览

postgresql - GraphQL - 将 JSON 解析为 graphql 类型数组以支持批量查询

我有一组使用graphql-tools模式拼接在网关中组合在一起的 graphql 服务。

以下是一些示例代码供参考:

在上面的示例代码中,我有三种方法来获取与用户关联的帖子:

1:User.posts

这工作正常,但不是批处理

2:User.batchPostsJSON

这非常好地批处理并且完美地解决了一个问题:JSON返回类型不允许我查询Post字段 - 无论如何我都会得到所有字段。更糟糕的是,如果Post与某些第三种类型有关,我将无法遵循这种关系。

3:User.batchPosts

这允许我查询 的字段Post,但会引发异常 - 我已将返回类型定义为 的数组Post,但返回的结果JSON是我在网关中收到错误。

有没有办法处理子模式返回的 JSON 并假装我真的[Post]回来了?当我valueFromResults完成时,这就是它的样子。问题是我的 typedef 和实际解析器之间的返回类型不匹配会在我有机会重新格式化返回值之前引发错误。

0 投票
1 回答
149 浏览

next.js - PostGraphile:makeExtendSchemaPlugin 中的 pgSettings user.id

是否可以pgSettings在 PostGraphile 插件中访问,特别是makeExtendSchema?这是我的中间件:

我想要一个将 userId 添加到每个突变的插件,因为它在 cookie 中,我无法在 graphql 有效负载中发送它。如果我想要一个 SQL 命令,我看到 pg 可用。只想知道该设置是否已经可用:

0 投票
1 回答
54 浏览

postgresql - PostGraphile deleteEdge 具有多对多关系

我有这个查询,哪里是和messageTags之间的多对多关系的连接表messagestags

我想运行一个deleteTag突变,并使用中继@deleteEdge自动更新连接。问题是突变返回id,而不是tagIdor tagByTagId.id

我试着开箱即用:

我还尝试添加开箱即用的有效负载:

没运气。现在我正在研究 graphile 用来构建突变 API 的 Postgres 函数。就像是:

0 投票
1 回答
55 浏览

postgresql - PostgreSQL -- 使用 CTE INSERT ID 连接 UNNEST 输出 -- 插入多对多

在 PostgreSQL 函数中,是否可以将 UNNEST 的结果(来自函数输入的整数数组)与从 CTE INSERT 返回的 ID 连接起来?

我有 PostgreSQL 表,例如:

我想创建一个 PostgreSQL 函数,该函数接受 的输入contenttag_id. 这是用于图形的。我想在一个函数中完成这一切,所以我得到了一个突变。

这是我到目前为止所得到的。我不知道如何UNNEST跨从 CTE 返回的 id 加入。

0 投票
1 回答
51 浏览

postgraphile - 在 PostGraphile 查询过滤器“或”运算符不起作用

Postgraphile 过滤器或正在工作并且正在工作

当我尝试或在查询过滤器中检查解释的资源管理器时,我发现它已更改为,这就是为什么它总是为而不是为 or

这就是探险家所说的。

0 投票
1 回答
65 浏览

javascript - 在 Postgraphile 中,如何更新/删除 JOIN 表?

我正在使用带有三个表的 Postgraphile(带有多对多插件):foosbarsfoo_bars. foo_bars是一个简单的连接表,其中foo_idbar_id列具有对应表的外键约束。

当我查看 GraphiQL 时,我可以看到有一个突变createFooBar,让我在那个 JOIN 表中创建一条记录。但是,一旦我创建了一条记录,似乎就无法删除或更改它,因为没有updateFooBarordeleteFooBar突变,而且updateFooorupdateBar突变似乎也没有办法影响foo_bar.

所以,一个简单的问题:如何更改 Postgraphile 中的 JOIN 表记录?

PS 相关文档页面https://www.graphile.org/postgraphile/relations/没有提供任何帮助。

0 投票
2 回答
195 浏览

postgresql - Postgres RLS 政策和功能

我在 Postgres 函数上违反了 RLS 政策。我相信这是因为策略依赖于函数中创建的行。在SELECT函数中运行命令。新行不可用,因为它们仍在事务中。

这是功能:

这是政策:

想法:

  1. 向联接表添加字段以简化策略,但它违反了正常形式。
  2. 返回用户输入而不是运行 SELECT,但输入可能会被转义,我应该能够运行SELECT命令
  3. 分成两个功能。创建message行,然后添加message_tag. 我正在运行 postgraphile,所以有两个突变。我在两者之间设置了外键关系。我不知道graphile是否会自动执行此操作。

错误信息:

运行该功能时收到错误消息。我希望函数成功运行,在表中插入一行message,并将输入数组转换为message_tag表的行message_tag.message_id=message.id,最后插入的 id。我需要一个适当的策略,以便来自该连接关系的用户只能看到他们自己组织的message_tag行。

这是关于 INSERT 命令的另一个策略。如果用户登录,它允许 INSERT:

0 投票
0 回答
33 浏览

graphql - 禁用 Postgraphile 自动生成的突变?

取自postgraphile文档

PostGraphile 自动为您生成 CRUD Mutations;但很少有这些可以满足您的所有需求 - 许多人只是彻底禁用它们。

除了它们可能无法满足所有需求之外,使用从 postgraphile 自动生成的 CRUD 突变是否有任何缺点或担忧?

0 投票
1 回答
165 浏览

node.js - 如何将 Cors 添加到 PostGraphile

我正在尝试将 cors 添加到快递服务器中的 PostGraphile 路由中。

当我试图从邮递员那里呼叫路线时,我在 Access-Control-Allow-Origin 中得到 *(通配符)。

如何添加特定路线以通过 Access-Control-Allow-Origin 返回?