Hot Chocolate提供了UseFiltering属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了

使用Hot Chocolate和.NET 6构建GraphQL应用(5) —— 实现Query过滤功能

系列导航#

使用Hot Chocolate和.NET 6构建GraphQL应用文章索引

需求#

对于查询来说,还有一大需求是针对查询的数据进行过滤,本篇文章我们准备实现GraphQL中基本的查询过滤。

思路#

Hot Chocolate提供了UseFiltering属性来用于构造包含查询过滤的SQL语句,所以我们直接使用就好了。

实现#

要使用Filtering属性,需要先在添加服务依赖注入的时候指定:

  • ProgramExtension.cs
builder.Services
    .AddGraphQLServer()
    .AddFiltering()
    .AddProjections()
    .AddQueryType<Query>()
    .AddType<PostType>();

然后在接口上方添加UseProjection即可,注意属性添加的顺序。

  • Query.cs
[UseProjection]
[UseFiltering]
public IQueryable<Post> GetPosts([Service] IRepository<Post> repository) => repository.GetAsQueryable();

这样就实现了查询的过滤,非常简单,下面我们来验证一下。

验证#https://www.imdb.com/list/ls539087944/
https://www.imdb.com/list/title/ls539087944/
https://www.imdb.com/list/ls539087944/?G5Rc3
https://www.imdb.com/list/ls539087948/
https://www.imdb.com/list/title/ls539087948/
https://www.imdb.com/list/ls539087948/?Es2L3
https://www.imdb.com/list/ls539087990/
https://www.imdb.com/list/title/ls539087990/
https://www.imdb.com/list/ls539087990/?2m5h7
https://www.imdb.com/list/ls539087997/
https://www.imdb.com/list/title/ls539087997/
https://www.imdb.com/list/ls539087997/?2q47u
https://www.imdb.com/list/ls539087992/
https://www.imdb.com/list/title/ls539087992/
https://www.imdb.com/list/ls539087992/?Sw14F
https://www.imdb.com/list/ls539087980/
https://www.imdb.com/list/title/ls539087980/
https://www.imdb.com/list/ls539087980/?NRC3f
https://www.imdb.com/list/ls539087985/
https://www.imdb.com/list/title/ls539087985/
https://www.imdb.com/list/ls539087985/?88us7
https://www.imdb.com/list/ls539087809/
https://www.imdb.com/list/title/ls539087809/
https://www.imdb.com/list/ls539087809/?B5SuX
https://www.imdb.com/list/ls539087802/
https://www.imdb.com/list/title/ls539087802/
https://www.imdb.com/list/ls539087802/?52GyB
https://www.imdb.com/list/ls539087804/
https://www.imdb.com/list/title/ls539087804/
https://www.imdb.com/list/ls539087804/?GF4KG
https://www.imdb.com/list/ls539087989/
https://www.imdb.com/list/title/ls539087989/
https://www.imdb.com/list/ls539087989/?nk1Vp
https://www.imdb.com/list/ls539087870/
https://www.imdb.com/list/title/ls539087870/
https://www.imdb.com/list/ls539087870/?R82Np
https://www.imdb.com/list/ls539087852/
https://www.imdb.com/list/title/ls539087852/
https://www.imdb.com/list/ls539087852/?HIff5
https://www.imdb.com/list/ls539087858/
https://www.imdb.com/list/title/ls539087858/
https://www.imdb.com/list/ls539087858/?I0QH6
https://www.imdb.com/list/ls539087810/
https://www.imdb.com/list/title/ls539087810/
https://www.imdb.com/list/ls539087810/?8k436
https://www.imdb.com/list/ls539087811/
https://www.imdb.com/list/title/ls539087811/
https://www.imdb.com/list/ls539087811/?2n9ja
https://www.imdb.com/list/ls539087878/
https://www.imdb.com/list/title/ls539087878/
https://www.imdb.com/list/ls539087878/?jLUWp
https://www.imdb.com/list/ls539087817/
https://www.imdb.com/list/title/ls539087817/
https://www.imdb.com/list/ls539087817/?rfWvJ
https://www.imdb.com/list/ls539087835/
https://www.imdb.com/list/title/ls539087835/
https://www.imdb.com/list/ls539087835/?r1vR3
https://www.imdb.com/list/ls539087831/
https://www.imdb.com/list/title/ls539087831/
https://www.imdb.com/list/ls539087831/?Au8s9
https://www.imdb.com/list/ls539087832/
https://www.imdb.com/list/title/ls539087832/
https://www.imdb.com/list/ls539087832/?D0b0t
https://www.imdb.com/list/ls539087839/
https://www.imdb.com/list/title/ls539087839/
https://www.imdb.com/list/ls539087839/?em2rH
https://www.imdb.com/list/ls539087866/
https://www.imdb.com/list/title/ls539087866/
https://www.imdb.com/list/ls539087866/?nm6EA
https://www.imdb.com/list/ls539087869/
https://www.imdb.com/list/title/ls539087869/
https://www.imdb.com/list/ls539087869/?bPMKJ
https://www.imdb.com/list/ls539087826/
https://www.imdb.com/list/title/ls539087826/
https://www.imdb.com/list/ls539087826/?rB3Xl
https://www.imdb.com/list/ls539087827/
https://www.imdb.com/list/title/ls539087827/
https://www.imdb.com/list/ls539087827/?vg7i1
https://www.imdb.com/list/ls539087868/
https://www.imdb.com/list/title/ls539087868/
https://www.imdb.com/list/ls539087868/?7194K
https://www.imdb.com/list/ls539087890/
https://www.imdb.com/list/title/ls539087890/
https://www.imdb.com/list/ls539087890/?B32Xq
https://www.imdb.com/list/ls539087842/
https://www.imdb.com/list/title/ls539087842/
https://www.imdb.com/list/ls539087842/?6IXeV
https://www.imdb.com/list/ls539087898/
https://www.imdb.com/list/title/ls539087898/
https://www.imdb.com/list/ls539087898/?xK7hV
https://www.imdb.com/list/ls539087894/
https://www.imdb.com/list/title/ls539087894/
https://www.imdb.com/list/ls539087894/?0devV
https://www.imdb.com/list/ls539087882/
https://www.imdb.com/list/title/ls539087882/
https://www.imdb.com/list/ls539087882/?MP5SZ
https://www.imdb.com/list/ls539087987/
https://www.imdb.com/list/title/ls539087987/
https://www.imdb.com/list/ls539087987/?mRZqe
https://www.imdb.com/list/ls539081002/
https://www.imdb.com/list/title/ls539081002/
https://www.imdb.com/list/ls539081002/?IcbH8
https://www.imdb.com/list/ls539081053/
https://www.imdb.com/list/title/ls539081053/
https://www.imdb.com/list/ls539081053/?8K11v
https://www.imdb.com/list/ls539081051/
https://www.imdb.com/list/title/ls539081051/
https://www.imdb.com/list/ls539081051/?3m23C
https://www.imdb.com/list/ls539081008/
https://www.imdb.com/list/title/ls539081008/
https://www.imdb.com/list/ls539081008/?6FU0r
https://www.imdb.com/list/ls539081009/
https://www.imdb.com/list/title/ls539081009/
https://www.imdb.com/list/ls539081009/?332B6
https://www.imdb.com/list/ls539081075/
https://www.imdb.com/list/title/ls539081075/
https://www.imdb.com/list/ls539081075/?I5U7a
https://www.imdb.com/list/ls539081054/
https://www.imdb.com/list/title/ls539081054/
https://www.imdb.com/list/ls539081054/?hvySi
https://www.imdb.com/list/ls539081073/
https://www.imdb.com/list/title/ls539081073/
https://www.imdb.com/list/ls539081073/?1420h
https://www.imdb.com/list/ls539081071/
https://www.imdb.com/list/title/ls539081071/
https://www.imdb.com/list/ls539081071/?zf0in
https://www.imdb.com/list/ls539081011/
https://www.imdb.com/list/title/ls539081011/
https://www.imdb.com/list/ls539081011/?YHj04
https://www.imdb.com/list/ls539081016/
https://www.imdb.com/list/title/ls539081016/
https://www.imdb.com/list/ls539081016/?TWB7C
https://www.imdb.com/list/ls539081012/
https://www.imdb.com/list/title/ls539081012/
https://www.imdb.com/list/ls539081012/?DaI7f
https://www.imdb.com/list/ls539081019/
https://www.imdb.com/list/title/ls539081019/
https://www.imdb.com/list/ls539081019/?Sqx6F
https://www.imdb.com/list/ls539081018/
https://www.imdb.com/list/title/ls539081018/
https://www.imdb.com/list/ls539081018/?7VEi2
https://www.imdb.com/list/ls539081031/
https://www.imdb.com/list/title/ls539081031/
https://www.imdb.com/list/ls539081031/?57DBE
https://www.imdb.com/list/ls539081036/
https://www.imdb.com/list/title/ls539081036/
https://www.imdb.com/list/ls539081036/?h1xR0
https://www.imdb.com/list/ls539081034/
https://www.imdb.com/list/title/ls539081034/
https://www.imdb.com/list/ls539081034/?1A7aI
https://www.imdb.com/list/ls539081065/
https://www.imdb.com/list/title/ls539081065/
https://www.imdb.com/list/ls539081065/?0V2j8
https://www.imdb.com/list/ls539081063/
https://www.imdb.com/list/title/ls539081063/
https://www.imdb.com/list/ls539081063/?5xWMg
https://www.imdb.com/list/ls539081015/
https://www.imdb.com/list/title/ls539081015/
https://www.imdb.com/list/ls539081015/?5KhxI
https://www.imdb.com/list/ls539081064/
https://www.imdb.com/list/title/ls539081064/
https://www.imdb.com/list/ls539081064/?CnMhM
https://www.imdb.com/list/ls539081021/
https://www.imdb.com/list/title/ls539081021/
https://www.imdb.com/list/ls539081021/?aE6Sz
https://www.imdb.com/list/ls539081068/
https://www.imdb.com/list/title/ls539081068/
https://www.imdb.com/list/ls539081068/?4vFfV
https://www.imdb.com/list/ls539081067/
https://www.imdb.com/list/title/ls539081067/
https://www.imdb.com/list/ls539081067/?432iy
https://www.imdb.com/list/ls539081022/
https://www.imdb.com/list/title/ls539081022/
https://www.imdb.com/list/ls539081022/?90N6T
https://www.imdb.com/list/ls539081024/
https://www.imdb.com/list/title/ls539081024/
https://www.imdb.com/list/ls539081024/?6uZuF
https://www.imdb.com/list/ls539081040/
https://www.imdb.com/list/title/ls539081040/
https://www.imdb.com/list/ls539081040/?Jiry4
https://www.imdb.com/list/ls539081043/
https://www.imdb.com/list/title/ls539081043/
https://www.imdb.com/list/ls539081043/?eFje3
https://www.imdb.com/list/ls539087899/
https://www.imdb.com/list/title/ls539087899/
https://www.imdb.com/list/ls539087899/?2H3Vp
https://www.imdb.com/list/ls539081044/
https://www.imdb.com/list/title/ls539081044/
https://www.imdb.com/list/ls539081044/?E8PBi
https://www.imdb.com/list/ls539081095/
https://www.imdb.com/list/title/ls539081095/
https://www.imdb.com/list/ls539081095/?a7995
https://www.imdb.com/list/ls539081091/
https://www.imdb.com/list/title/ls539081091/
https://www.imdb.com/list/ls539081091/?11tet
https://www.imdb.com/list/ls539081094/
https://www.imdb.com/list/title/ls539081094/
https://www.imdb.com/list/ls539081094/?Hl0Qv
https://www.imdb.com/list/ls539081087/
https://www.imdb.com/list/title/ls539081087/
https://www.imdb.com/list/ls539081087/?3HdZP
https://www.imdb.com/list/ls539081085/
https://www.imdb.com/list/title/ls539081085/
https://www.imdb.com/list/ls539081085/?W6wKU
https://www.imdb.com/list/ls539081083/
https://www.imdb.com/list/title/ls539081083/
https://www.imdb.com/list/ls539081083/?QUL6E
https://www.imdb.com/list/ls539081026/
https://www.imdb.com/list/title/ls539081026/
https://www.imdb.com/list/ls539081026/?LczF5
https://www.imdb.com/list/ls539081058/
https://www.imdb.com/list/title/ls539081058/
https://www.imdb.com/list/ls539081058/?MGMsR
https://www.imdb.com/list/ls539081507/
https://www.imdb.com/list/title/ls539081507/
https://www.imdb.com/list/ls539081507/?9358t
https://www.imdb.com/list/ls539081503/
https://www.imdb.com/list/title/ls539081503/
https://www.imdb.com/list/ls539081503/?2xvFH
https://www.imdb.com/list/ls539081501/
https://www.imdb.com/list/title/ls539081501/
https://www.imdb.com/list/ls539081501/?Uy0j7
https://www.imdb.com/list/ls539087942/
https://www.imdb.com/list/title/ls539087942/
https://www.imdb.com/list/ls539087942/?udS4N
https://www.imdb.com/list/ls539081511/
https://www.imdb.com/list/title/ls539081511/
https://www.imdb.com/list/ls539081511/?m9LUK
https://www.imdb.com/list/ls539081183/
https://www.imdb.com/list/title/ls539081183/
https://www.imdb.com/list/ls539081183/?poXTW
https://www.imdb.com/list/ls539081352/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值