使用 PostGraphile 在 GraphQL 中过滤结果
Filtering results in GraphQL using PostGraphile
我正在尝试全神贯注于 GraphQL,虽然我使用 PostGraphile 轻松快速地映射我的 PostgreSQL 数据库并使用 GraphQL 公开它。但是,我在一些简单的 SQL 几分钟内就能完成的事情上停留了很长时间 -
首先,我试图在定义的日期之后从我的数据库中获取所有记录,到目前为止无法做到这一点,我最终得到了 all 条记录,这是效率极低。
其次,我想获取其中可空字段不为空的所有记录(意思是,只有其中包含某些内容,它才会显示在 GraphQL 结果中)
如果有人能阐明如何做到这一点,或者给我指出一个很好的教程,该教程以简单的方式解释了如何编写自定义过滤函数,那就太好了。
PostGraphile 的 community plugins; for your needs you probably want postgraphile-plugin-connection-filter which adds a number of filters to PostGraphile connections that you'd expect (less than, greater than, in a list, not in a list, and/or/not, like, contains, etc). It's also possible to implement your own plugins, or to achieve this goal via custom queries.
列表虽小但不断增加
要扩展@Benjie 的答案,请先安装插件:
yarn add postgraphile-plugin-connection-filter
然后您可以从控制台 运行 postgraphile:
postgraphile --append-plugins <plugin path> --connection <dbname>
例如在 Linux:
postgraphile --append-plugins `pwd`/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
或 Windows:
postgraphile --append-plugins /users/bburns/desktop/moveto/site/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
然后您可以使用位于 http://localhost:5000/graphiql 的 graphiql 端点尝试新过滤器。您可以 运行 查询
{
allProperties(first: 5, filter: {
appraisedValue: {lessThan: 100000}
}) {
nodes {
propertyId
appraisedValue
acres
}
}
}
注意:https://www.graphile.org/postgraphile/extending/ 的文档说您可以只提供 npm 包的名称,但这似乎不适用于 Windows。
我正在尝试全神贯注于 GraphQL,虽然我使用 PostGraphile 轻松快速地映射我的 PostgreSQL 数据库并使用 GraphQL 公开它。但是,我在一些简单的 SQL 几分钟内就能完成的事情上停留了很长时间 -
首先,我试图在定义的日期之后从我的数据库中获取所有记录,到目前为止无法做到这一点,我最终得到了 all 条记录,这是效率极低。
其次,我想获取其中可空字段不为空的所有记录(意思是,只有其中包含某些内容,它才会显示在 GraphQL 结果中)
如果有人能阐明如何做到这一点,或者给我指出一个很好的教程,该教程以简单的方式解释了如何编写自定义过滤函数,那就太好了。
PostGraphile 的 community plugins; for your needs you probably want postgraphile-plugin-connection-filter which adds a number of filters to PostGraphile connections that you'd expect (less than, greater than, in a list, not in a list, and/or/not, like, contains, etc). It's also possible to implement your own plugins, or to achieve this goal via custom queries.
列表虽小但不断增加要扩展@Benjie 的答案,请先安装插件:
yarn add postgraphile-plugin-connection-filter
然后您可以从控制台 运行 postgraphile:
postgraphile --append-plugins <plugin path> --connection <dbname>
例如在 Linux:
postgraphile --append-plugins `pwd`/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
或 Windows:
postgraphile --append-plugins /users/bburns/desktop/moveto/site/node_modules/postgraphile-plugin-connection-filter/index.js --connection mydb
然后您可以使用位于 http://localhost:5000/graphiql 的 graphiql 端点尝试新过滤器。您可以 运行 查询
{
allProperties(first: 5, filter: {
appraisedValue: {lessThan: 100000}
}) {
nodes {
propertyId
appraisedValue
acres
}
}
}
注意:https://www.graphile.org/postgraphile/extending/ 的文档说您可以只提供 npm 包的名称,但这似乎不适用于 Windows。