筛选查询结果/搜索查询

  • 比较运算符
    • 等于运算符(_eq,_neq)
    • 大于或小于运算符(_gt,_lt,_gte,_lte)
    • 基于列表的搜索运算符(_in,_nin)
    • 文本搜索或模式匹配运算符(_like,_like等)
    • JSONB运算符(_contains,_has_key等)
    • PostGIS空间关系运算符(_st_contains,_st_crosses等)
    • 筛选或检查空值(_is_null)
    • RASTER列上的相交运算符(_st_intersects_rast等)

在查询中使用 where 关键字来过滤筛选结果,如果需要多个参数在同一 where 可以使用 _and _or

这里 _eq _gt 是比较运算符的示例
要获取一篇文章的评分高于4的作者列表以及这些文章

query {
   author (where: {articles: {rating: {_gt: 4}}}) {
     articles (where: {rating: {_gt: 4}}) {
       title
       rating

_eq是等于运算符,_gt是大于运算符。

比较运算符

让我们看一下可以用来过滤结果的不同比较运算符。
相等运算符_eq_neq
_eq(等于)或_neq(不等于)运算符是与任何相容的Postgres键入以外 jsonjsonB(如IntegerFloatDoubleTextBooleanDate/ Time/ Timestamp等)。

基于列表的搜索运算符_in_nin
_in(在列表中)和_nin(未在列表)运算符用于字段值的比较值的列表。它们是相容的Postgres键入以外 jsonjsonB(如IntegerFloatDoubleTextBooleanDate/ Time/ Timestamp等)。

文本搜索或模式匹配运算符_like_like等)
_like_nlike_ilike_nilike_similar_nsimilar运算符用于对串/文本字段模式匹配。
这些运算符的行为与SQL运算符完全相同

  • _like是区分大小写的。_ilike不区分大小写的搜索。
  • _similar区分大小写

JSONB运算符_contains_has_key等)

_contains_contained_in_has_key_has_any_has_key_所有运算符都用于基于JSONB列进行筛选。

PostGIS空间关系运算符_st_contains_st_crosss等)
_st_crosss_st_equals_st_intersects_st_overlaps_st_touch_st_within_st_d_within的运算符用于基于类似于列的几何体进行筛选。
_st_d_withinst_intersects也可用于geography列。
这里不太懂 应该是几何数组的筛选吧

筛选或检查空值_is_null
可以使用is_null运算符来检查空值。

筛选与条件不符的值(_not)
_not运算符可用于获取某些条件不为真的结果,反转某个条件过滤。

在同一查询中使用多个筛选器_and_or
可以在同一个where参数中对多个参数进行分组,方法是使用_and_or运算符根据多个条件筛选结果。
_add 写法样例

query {
  article (
    where: {
      _and: [
        { published_on: {_gte: "2017-01-01"}},
        { published_on: {_lte: "2017-12-31"}}
    title
    published_on

过滤嵌套对象
where参数可以用于数组关系,也可以用于筛选嵌套对象。对象关系只有一个嵌套对象,因此它们不公开where参数。

嵌套对象字段的筛选
您还可以使用嵌套对象的字段筛选查询结果。

筛选前将字段转换为其他类型_cast
可以使用_cast运算符将字段强制转换为其他类型,这允许在不支持这些类型的字段上使用特定于类型的运算符。目前,只支持PostGIS geometry 和 geography类型之间的转换。
_cast 强制转换类型 对应 SQL类型的强制转换。

真表达式({})
对于所有对象,表达式{}的计算结果都为true。

比较表达式中空值的计算
如果在任何比较表达式中传递了空值(或未定义的值),则该表达式当前将缩减为{}

https://hasura.io/docs/1.0/graphql/manual/index.html

利益和动机 该实用程序基于并且是当前Hasura GraphQL API格式的自定义数据提供程序。 现有的ra-data-hasura提供程序使用标准REST(而非GraphQL)与Hasura V1通信。 现有的ra-data-graphql-simple提供程序要求您的GraphQL终结点为公开的对象和方法实现特定的语法,如果您打算使用Hasura API,则该选项不可用,因为公开的对象和方法是为符合自己的规格。 该实用程序根据Hasura API公开的属性(例如object_bool_exp和object_set_input自动生成有效的GraphQL查询。 安装方式: enabled = TRUE AND mfg_order_status_enum != 'MfgOrderStatus.unReleased' AND watcher ->'processRouteWorkstations' is no 后端开发通常需要编写多行代码来处理 CRUD、授权和业务逻辑。所有这些代码都需要在项目的整个生命周期内进行测试、调试和维护。这需要开发人员可以用来开发新功能的大量时间。在本文中,您将了解 Hasura 和 PostgreSQL 如何帮助您加快应用程序开发并以最少的工作快速启动后端。 Hasura是一个开源 GraphQL 引擎,它使用您的数据库模式生成的 GraphQL 和 REST API 端点。它支持数据建模、实时查询、事件编程、基于角色的授权以及通过 GraphQL 运行自定义业务逻辑的操作。 深入GraphQL 的使用语法 对于GraphQL 的使用语法在上一节中已经大概介绍了基本的使用方式了,这一篇将会对上一篇入门做拓展,努力将所有的使用语法都覆盖到。 1. 终端语法 首先是介绍在前端查询时用的语法,分成Query 和Mutation 两部分,Subscription 的和Query 是类似的就不特别说明了。 1.1 Query 假设我们现在有一个数据集,结构是这样的: 学生和老师各有各自的特有字段; 学生中有个获取所有相关老师的方法,老师中也有一个获取所有学生的方法; 学生和老师互为多对多 GraphQL 的类型系统分为标量类型(Scalar Types,标量类型)和其他高级数据类型。 标量类型即可以表示最细粒度数据结构的数据类型,可以和 JavaScript 的原始类型对应。 1. GraphQL 规范目前规定支持的标量类型有: (1). Int -有符号 32 位整数。 (2). Float-有符号双精度浮点值。 (3). String-U......... 第27讲:实战入门 GraphQL,如何将 REST API 换成 GraphQL 从本节开始将深入介绍 query-graphql-plugin 插件,我们会启动 SkyWalking Rocketbot 来查询 Trace 数据和 JVM 监控数据,这些用户查询请求最终都会路由到 query-graphql-plugin 插件中进行处理。 GraphQL 简介 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时。GraphQL 并没有和任何特定数据库或者存储引 本文由 kazaff 翻译而成,点击阅读原文可以查看作者的博客,感谢作者的优质输出,让我们的技术世界更加美好✌️很久之前其实就关注过这个技术,记得当时还是React刚刚崭露头角的时期吧。... ## GraphQL 入门 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 一个 GraphQL 服务是通过定义类型和类型上的字段来创建的,然后给每个类型上的每个字段提供解析函数。例如,一个 GraphQL 服务告诉我们当前登录用户是 me,这个用户的名称可能像这样: type Query { me: User type Us. GraphQL在近几年被提到的次数越来越多,最近参加过的几次技术大会前端分会场均提到过。对于这种光看名字并不容易想到它是什么的东西,还是存在些神秘感的。于是,打算去了解一下GraphQL到底是什么。 什么是GraphQL? 首先,GraphQL来自Facebook,如果你也跟我一样完全没了解过它,不知道它到底是干什么的,那么你一定听说过另一个叫做 Structured QL的东西。WHAT? 其...