GraphQL 条件过滤器
GraphQL conditiontal Filter
使用 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 }
上面的查询将是:
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
}
}
您随查询一起传递的变量现在将包含 filter
的对象(即 { favorited: true }
),而不是 favorited
的布尔值。
要涵盖所有三种情况,请发送:
{ favorited: true }
{ favorited: false }
{}
(无过滤器)
编辑:我认为在这种情况下输入类型的名称是PhotoFilter
,但您可能需要仔细检查您的架构以确定。
使用 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 }
上面的查询将是:
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
}
}
您随查询一起传递的变量现在将包含 filter
的对象(即 { favorited: true }
),而不是 favorited
的布尔值。
要涵盖所有三种情况,请发送:
{ favorited: true }
{ favorited: false }
{}
(无过滤器)
编辑:我认为在这种情况下输入类型的名称是PhotoFilter
,但您可能需要仔细检查您的架构以确定。