Fun*_*nja 7 graphql graphql-js graphcool
使用 GraphCool 后端,有没有办法在查询中使用条件过滤器?
假设我有一个这样的查询:
query ($first: Int, $skip: Int, $favorited: Boolean) {
allPhotos (
first: $first
skip: $skip
filter: {
favorited: $favorited
}
)
{
id
url
title
favorited
}
}
//variables: { "first": 10, "skip", "favorited": true }
Run Code Online (Sandbox Code Playgroud)
上面的查询将:
1) 只获取收藏的照片。
2)只获取不喜欢的照片。
我的问题是我希望能够:
1) 查询仅收藏或不收藏的照片。
2) 查询照片,不管它们是否被收藏。
如何有条件地包含过滤器?我可以吗?我正在用 Javascript 中的 react-apollo 做一些事情,我可以用代码找出一个解决方案,但我想知道是否有办法在 graphql 领域做到这一点。
GraphQL 变量不一定必须是标量——它们也可以是输入类型。因此,您的查询可能如下所示:
query ($first: Int, $skip: Int, $filter: PhotoFilter) {
allPhotos (
first: $first
skip: $skip
filter: $filter
)
{
#requested fields
}
}
Run Code Online (Sandbox Code Playgroud)
您与查询一起传递的变量现在将包含一个对象(即{ favorited: true }) forfilter而不是一个布尔值 for favorited。
要涵盖所有三个场景,请发送:
{ favorited: true }{ favorited: false }{} (无过滤器)编辑:我认为在这种情况下输入类型的名称是,PhotoFilter但您可能需要仔细检查您的架构以确保。
| 归档时间: |
|
| 查看次数: |
4750 次 |
| 最近记录: |