问题标签 [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 回答
130 浏览

graphql - 使用过滤器对 totalCount 的 PostGraphile 订阅忽略递减

目标:

订阅今天安排的产品数量(来自 Postgres 数据库),state=NEW

编码:

问题:

每当我插入或更新产品时,总计数就会增加,以使其符合条件。但是,当我删除或更新产品以不再符合条件时,它永远不会减少。该问题出现在我的应用程序和 GraphiQL 中,因此我将其范围缩小到上面的代码。

我使用 postgraphile-plugin-connection-filter 作为过滤器,但删除它并没有改变问题。

到目前为止我发现了什么:

在我的结果中添加节点的解决方法。当我添加具有一些任意属性的节点时,订阅行为正确。像这样:

有没有办法在不包括结果中的节点的情况下使其正常工作?

0 投票
0 回答
377 浏览

javascript - React-admin,如何正确处理 dataProvider 上的身份验证错误?

我正在尝试将经过身份验证的数据提供者集成到 React-Admin 中,但是当数据提供者还没有来自身份验证提供者的有效身份验证令牌时,我遇到了麻烦。

我正在使用https://github.com/des-des/ra-postgraphile-client

我实例化数据提供者的代码如下所示:

我预计当 React-Admin 收到来自数据提供者的错误时,它会重定向回主页。但相反,它会引发未处理的拒绝。

当没有令牌存在时,我还尝试返回 HTTPError:

并得到了不同的结果:

Unhandled Rejection (Error): Network error: fetcher(...).then is not a function

0 投票
1 回答
204 浏览

docker - 当我的 GraphQL 架构在运行时由 postgraphile(在其自己的容器中)自动生成时,如何将中继编译器作为离线构建步骤运行?

我正在构建一个 Web 应用程序,其文件结构如下所示:

该项目由三个容器组成:db运行 postgres 服务器、graphql运行 postgraphile(自动生成 GraphQL 模式并处理 GraphQL 请求),并且app是一个快速应用程序。

我的前端代码包含在app/frontend. 通常,我会npm run build在该目录中运行以调用 webpack,将 的内容构建app/frontend/srcapp/public/index.js. 这样,构建前端是一个离线过程,而应用程序本身只是为前端提供服务。

这是我的困境:我正在尝试将 Relay 支持添加到我的前端。这需要在前端构建中增加一个步骤,即运行中继编译器。但是中继编译器需要 GraphQL 模式。由于我使用的是 postgraphile,因此在离线构建期间我实际上没有架构。--export-schema-graphqlPostgraphile可以吐出一个模式文件(带哪一点我有一个 graphql.schema 文件......坐在 graphql 容器内。但这一切都是在我启动应用程序之后发生的——在此之前我需要一个模式文件,作为离线构建的一部分。

我对 Docker、GraphQL、postgraphile 尤其是 Relay 还是很陌生——所以我希望更熟悉这些技术的人能给我一些智慧。我还没有找到很多专门解决使用 Relay 和 postgraphile 的资源。

代替特定的最佳实践,也许更熟悉现代 Web 开发的人可以帮助我整理这些选项:

  • 我是否更新了我的前端,使其完全能够启动 postgres 服务器并运行 postgraphile(仅作为开发依赖项),然后添加一个生成 schema.graphql 文件供自己使用的离线脚本?这似乎是一个大麻烦。

  • 我是否更新了我的 graphql 容器,以便它始终写出一个模式文件,并根据需要手动将该文件复制并粘贴到我的前端?

  • 我是否在任何容器外部添加一个额外的进程(每当我的数据库模式发生变化时我都会手动运行)(可能通过一个替代的 docker-compose 文件),它启动了我的应用程序堆栈的一个子集,转储出一个 graphql 模式,然后退出?如果是这样,是否有某种方法可以指示 Docker 容器在主机上写出文件,或者将本地目录挂载到容器中是实现此目的的最佳方法?

  • 有没有更好的方法来构建我的项目来避免这个问题?我是 Docker 的新手,我觉得我的大脑可能只是分为 Docker 前和 Docker 后两种心态。

0 投票
1 回答
963 浏览

graphql - GraphQL - 如何在查询多个突变期间检索先前突变的 id

我想在同一个查询中运行多个突变。

在下面的示例中,我创建了一个订单,然后创建了一个产品记录,涉及先前创建的。

我必须有2个突变。

首先,我插入一个订单。在输出中,我检索了 idorder。

然后,我插入一个产品。这个产品

SQL结构的真实示例:

如何从上面的 createOrder 输出中检索 idorder?

有可能的 ?

如果我忘记了一些信息,请不要犹豫。

提前致谢。

编辑

  • 使用 PostGraphile,插件“postgraphile-plugin-nested-mutations”或“自定义突变”(带有 PL PGSQL 功能)
  • 在没有 PostGraphile 的情况下,作为 @xadm 示例的解析器允许这种特定的嵌套突变。
0 投票
1 回答
653 浏览

graphql - Fastify JWT 与 postgraphile 的使用

我正在尝试使用 fastify 服务器设置 postgraphile,它按预期工作。现在,我使用 fastify-jwt 插件将身份验证中间件添加到 postgraphile 公开的 graphql 端点,但是当我使用 graphql IDE 访问 graphql 端点时,我能够看到该方案并能够在没有授权标头的情况下查询数据。如何使 fastify-jwt 插件与 postgraphile 一起使用?

这是我的代码:

安装Postgraphile.js

服务器.js

任何帮助表示赞赏。

0 投票
1 回答
250 浏览

postgraphile - 在 Postgraphile 中,如何简化 API?

使用 Postgraphile,假设我正在查询所有 Foos,即。allFoosList. 还假设我的 Foo 表与我的数据库中的 Bar 表具有多对多关系(即我的 Foos 有 Bars)。

在我的结果中,我将返回一组 Foo 对象。这些对象将具有一个 Bars 数组的属性。但是,该字段不会是barsor barsByBarIdList... 它的名称类似于barFoosByFooIdList. 该数组中的对象将具有一个barByBarId属性,该属性将具有实际的记录值。

我有办法纠正/简化这个吗?

0 投票
1 回答
75 浏览

postgresql - Postgres 函数 - 组合来自多个查询的对象数组

我这里有以下数据集

我正在运行这个查询:

(这是所有这些的小提琴。)

但我想创建一个 Postgres 函数,该函数将返回结果(JSON),如下所述。

我设法接近预期的结果,但我没有想法。在我的查询中,我选择了所有类别,但我需要能够添加一个条件,例如:parent_id = "function_param"可能是 NULL,或者另一个 id/integer。

0 投票
3 回答
1171 浏览

reactjs - 单独文件中的 GraphQL 查询(gql、graphql)

我正在使用 React + Postgraphile (GraphQL) + axios(对 postgraphile 服务器的 http 请求)的技术组合进行项目。

它有很多 GraphQL 查询。最初从与其他 JavaScript 和渲染代码在同一文件中的查询开始,但一旦添加特定查询,它就变得混乱。

在搜索时我开始知道我们可以将查询分离到单独的文件中 - .graphql 或 .gql 为此,我必须与 Webpack 模块集成 -

我想知道是否有更简单(开箱即用)的方法可以在不使用 Webpack 的情况下实现类似的事情,因为它需要大量的配置。

任何指针或示例都会非常有帮助。

谢谢你。

0 投票
0 回答
319 浏览

postgresql - postgraphile 条件过滤器失败

我正在将 GraphQL 应用程序从使用 Postgraphql 3.10 和 Postgresql 9.6 版数据库迁移到使用 postgraphile 4.7.0 版和 Postgresql 11 版数据库。

下面的 graphql 查询曾经在旧版本中工作,但在新版本中失败。

失败是因为条件过滤器和错误消息说:

我找不到任何关于如何设置数据库表来支持这种情况的文档。我是否需要将已发布、删除和定位的字段添加到 postgraphile 的某个索引以支持此条件?

Express 应用程序中的 Postgraphile 配置

0 投票
0 回答
1042 浏览

postgresql - React-admin:dataProvider 抛出错误。它应该返回一个被拒绝的 Promise。- 尝试在 pg 数据库中设置参照完整性

我正在将 react-admin 设置为汉堡餐厅的仪表板。这是我的我的 github存储库

如果缺少任何必需的故障排除信息,我深表歉意。我有点超出我的深度,但我正在尝试。

我创建了两个表(如果计算联系人,三个表)来存储菜单和菜单类别。我试图设置参照完整性。执行此操作后(并使用新的 seed.sql 文件重建项目),单击左侧的“menucategories”后,我立即开始获得以下信息:

在此处输入图像描述

控制台的第一批错误信息是这样的:

在学习如何设置参照完整性时,我指的是以下教程。

请注意,repo 中的 seed.sql 文件尚未更新为我正在使用的版本(在我的机器上),如下所示:

测试数据通过fixtures.sql文件预填充到数据库中

这是我的 App.js 文件中的代码:

我正在使用 AutocompleteInput 来(硬编码)预填充值,但我需要将其更改为 ReferenceField 或ReferenceInput之类的东西以从数据库中提取类别。我只是不是 100% 确定如何做到这一点,因为我是 react-admin 的新手。任何建议将不胜感激。

我的 Menu.js 文件如下:

任何帮助或帮助将不胜感激。