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

javascript - 查询中的 Graphql 条件变量

我希望完全省略我不使用的变量以避免错误,例如"Variable "$eventId" got invalid value ""; Int cannot represent non-integer value: "

以这个查询为例:

现在我假设这个查询可以正常工作,但过滤的 eventId 部分将被完全忽略。

有没有办法用graphQL和postgraphile解决这个问题

这是我当前的解决方案,无需考虑,我只需要它现在就可以工作:

0 投票
0 回答
65 浏览

graphql - PostGraphile - exportGqlSchemaPath 将主 uuid 列从 id 重命名为 rowId?

我是 GraphQL 的新手,我使用 Relay 作为我的客户端,使用 PostGraphile 作为我的模式生成器。我的数据库基于这个PostgreSQL Schema Design

我的表是人员、帖子和图像,主键是一个名为iduuid 类型的列。

当 PostGraphile 生成我的模式时,它将 id 列重命名为rowId并保留该id列,但使用不同类型的随机键,可能是所有表中唯一的记录 id。

我应该重命名我所有的主要 uuid 列person_idpost_idimage_id等等吗?或者有没有办法改变 exportGqlSchemaPath 处理 id 的方式?

0 投票
1 回答
214 浏览

graphql - PostGraphile 订阅 - “主题”指的是什么?

我正在使用 PgPubsub,我正试图让我的头脑四处走动listentopic*:""看看放在那里的东西。

例如,假设我有一个<PostList>呈现列表的组件,<Post>并且我想在创建或删除 Post 时更新列表。

我不确定如何构建我的订阅,所以我正在监听 PostList 的更改。这是我的 GraphiQL 的屏幕截图:

在此处输入图像描述

0 投票
1 回答
300 浏览

postgraphile - graphql-shield 作为 Postgraphile 中的“makeProcessSchemaPlugin”

尝试过 postgrphile 示例,但不确定在哪里出错?

我正在尝试将 graphql-shield 实现为插件

权限.ts

我将 middlewarePlugin 作为 postgraphile 中的其他插件导入:

崩溃日志:

| 构建初始架构时发生严重错误。退出是因为retryOnInitFail未设置。错误详情:graphql | 图ql | 类型错误:无法读取未定义 graphql 的属性“片段”| 在 isMiddlewareWithFragment (/home/node/app/node_modules/graphql-middleware/src/utils.ts:25:17) graphql | 在 Object.isMiddlewareFunction (/home/node/app/node_modules/graphql-middleware/src/utils.ts:33:10) graphql | 在 Object.validateMiddleware (/home/node/app/node_modules/graphql-middleware/src/validation.ts:9:7) graphql | 在 addMiddlewareToSchema (/home/node/app/node_modules/graphql-middleware/src/middleware.ts:33:27) graphql | 在 normalisedMiddlewares.reduceRight.schema.schema (/home/node/app/node_modules/graphql-middleware/src/middleware.ts:91:11) graphql | 在阵列。reduceRight() 在 applyMiddlewareWithOptions (/home/node/app/node_modules/graphql-middleware/src/middleware.ts:80:77) graphql | 在 applyMiddleware (/home/node/app/node_modules/graphql-middleware/src/middleware.ts:132:10) graphql | 在钩子 (/home/node/app/resolvers/test.resolver.ts:254:16) graphql | 在 SchemaBuilder.applyHooks (/home/node/app/node_modules/graphile-build/src/SchemaBuilder.js:398:20)

0 投票
0 回答
93 浏览

postgresql - 如何配置简单订阅以使用 Postgraphile CLI 运行?

我想将订阅添加到我拥有的 react 项目中,该项目当前使用通过运行 postgraphile 创建的端口 5000 端点引用 graphql。我使用全局安装(通过 npm -g postgraphile)postgraphile 的命令行启动来启动它。这工作正常。

通过文档(https://www.graphile.org/postgraphile/subscriptions/)我看到我应该能够通过 CLI 启用订阅:- https://www.graphile.org/postgraphile/subscriptions/#enabling -with-the-cli-1

但是,当我运行此程序时,出现错误:-“错误:找不到模块'--simple-subscriptions'

我不确定这是否与 pg-pubsub 有关。当我在全球范围内安装 postgraphile 时,我对 pg-pubsub 做了同样的事情。因此,而不是:-
postgraphile --plugins @graphile/pg-pubsub --subscriptions --simple-subscriptions 等

我有:-
postgraphile --plugins pg-pubsub --subscriptions --simple-subscriptions 等

但是我知道它可以使用“-append-plugins MySubscriptionPlugin.js”运行插件,而不是简单订阅启动服务器时列出“(启用订阅)”。

有没有人设法通过 CLI 运行简单的订阅?

0 投票
0 回答
146 浏览

file-upload - 找不到模块“postgraphile 插件上传字段”

我安装了 postgraphile-plugin-upload-field

npm i graphile-contrib/postgraphile-plugin-upload-field

然后

postgraphile -c 'postgres://postgres:mysecretpass@192.168.38.4:5432/gimapp' --cors -p 5001 --enhance-graphiql --host "0.0.0.0" -s messages,basic_auth,user --append-plugins @graphile/postgis,@graphile-contrib/pg-simplify-inflector,postgraphile-plugin-connection-filter,@graphile-contrib/postgraphile-plugin-upload-field --watch --no-ignore-indexes --jwt-token-identifier basic_auth.jwt_token --jwt-secret mysecretpass

像这样抛出异常。

如果我删除@graphile-contrib,这是另一种情况

postgraphile -c 'postgres://postgres:mysecretpass@192.168.38.4:5432/gimapp' --cors -p 5001 --enhance-graphiql --host "0.0.0.0" -s messages,basic_auth,user --append-plugins @graphile/postgis,@graphile-contrib/pg-simplify-inflector,postgraphile-plugin-connection-filter,postgraphile-plugin-upload-field --watch --no-ignore-indexes --jwt-token-identifier basic_auth.jwt_token --jwt-secret mysecretpass

这是错误:

0 投票
1 回答
237 浏览

postgresql - 在 Postgraphile 中,对多对多关系使用权限

如何使用 Postgraphile 在多对多关系上定义扩展权限和授权?

想象一下我有这种多对多的关系(从官方文档中借用并用简化的权限进行了调整):

我可以制定行级安全策略,例如:

但是由于我是最近将 MySQL 转换为 PostgreSQL 的人,所以我试图查看是否可以pa.permission针对尝试的更改进行上述策略检查,并且只允许permission = owner更新帖子的所有字段,而用户permission = editor只能更新summary.

我知道这通常是在应用层而不是数据库中处理的,但我想我会先看看有什么可能。

谢谢!

另请参阅此处的相关主题

0 投票
2 回答
690 浏览

graphql - Postgraphile error while trying to open UI

When I try to open postgraphile UI it's not working. I'm getting the following error.

A serious error occurred when building the initial schema. Exiting because retryOnInitFail is not set.

Error: Connection terminated unexpectedly
at Connection. (D:\cars-assignment\node_modules\pg\lib\client.js:132:73)
at Object.onceWrapper (events.js:421:28)
at Connection.emit (events.js:315:20)
at Socket. (D:\cars-assignment\node_modules\pg\lib\connection.js:108:12)
at Socket.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1201:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)

I'm using the following command npx postgraphile -c postgres://username:SECRET@localhost:5000/db

How to resolve this issue?

0 投票
1 回答
74 浏览

postgresql - PostgreSQL - 返回“是我的”布尔值的计算列

一般来说,我是 pg 和 dbs 的新手。我找到了一个博客数据库样板,我正在尝试添加一些计算列来返回布尔值,以确定 currentPerson(经过身份验证的用户)是否是帖子的作者。基本上,posts 表中的一个虚拟列对于每个帖子都有一个 true 或 false 来判断 currentPerson 是否创作了它。

此函数返回 currentPerson:

所以,我想做类似下面的事情,但这是不正确的。这在 graphiql 中显示为一个突变(我正在使用 postgraphile 来生成我的模式)。

任何关于如何在帖子表中创建isMyPost布尔计算列的提示都会很棒。

0 投票
0 回答
65 浏览

sequelize.js - 如何使用`selectGraphQLResultFromTable` 在后图形解析器中加载 Sequelize 查询的关系?

我的数据库中有几个相关的表:

rooms桌子:

houses桌子:

在我的项目中,我使用 PostGraphile (graphile-utils) 作为我的 GraphQL 提供程序。

rooms我创建了一个自定义解析器来使用 Sequelize执行动态构建的复杂查询。我选择通过 Sequelize 而不是直接通过 PostGraphile 查询数据库,因为查询对象的各个部分是动态构建的(where对象和include数组)。

解析器如下所示:

此查询有效,但现在无法为房间加载关系,因此我无法house通过相关过滤房间进行查询:

结果是

在 PostGraphile 文档中,我找到了selectGraphQLResultFromTable似乎加载关系的方法,但我不确定如何将它与 Sequelize 查询结合使用;也就是说,我的解析器如何仅返回我通过 Sequelize 过滤的房间,其格式可以查询它们的关系(如上面的示例)?