订阅一个 GraphQL 项
Subscribe to one GraphQL item
将 GraphCool 用于我的 GraphQL 后端,我想知道如何在给定 ID 的情况下仅订阅单个项目。我一直在查看文档并尝试使用过滤器,但我仍然无法弄清楚。如果我想订阅所有项目突变,我知道我必须这样做:
subscription {
Photo{
node {
id
title
url
}
}
}
如何收听具有给定 ID 的项目?
filter capabilities known from the Simple API 也可以在订阅 API 中使用。为此,您可以在 filter
对象中使用 node
属性。下面是一些实际的订阅过滤器示例:
订阅创建的照片
使用mutation_in
,我们可以决定是否要监听创建、更新或删除的事件(或它们的混合):
subscription {
Photo(filter: {
mutation_in: [CREATED]
}) {
node {
id
title
url
}
}
}
订阅创建的照片并更新照片的特定字段
监听更新时,我们可以进一步指定只监听特定字段的更新,使用updatedFields_contains
、updatedFields_contains_every
和updatedFields_contains_some
:
subscription {
# we can only use `updatedFields_x` filters together with `UPATED`
# so we use OR
Photo(filter: {
OR: [{
mutation_in: [UPDATED]
updatedFields_contains: "title"
}, {
mutation_in: [CREATED]
}]
}) {
previousValues {
title # contains old title
}
node {
id
title # contains new title
url
}
}
}
订阅某张照片的更新
对于所有订阅查询,我们可以使用node
进一步细化订阅条件。这与用于 allPhoto
的过滤器相同,例如:
subscription updatedPhoto($id: ID!) {
Photo(filter: {
mutation_in: [UPDATED]
node: {
id: $id
}
}) {
previousValues {
title # contains old title
}
node {
id
title # contains new title
url
}
}
}
将 GraphCool 用于我的 GraphQL 后端,我想知道如何在给定 ID 的情况下仅订阅单个项目。我一直在查看文档并尝试使用过滤器,但我仍然无法弄清楚。如果我想订阅所有项目突变,我知道我必须这样做:
subscription {
Photo{
node {
id
title
url
}
}
}
如何收听具有给定 ID 的项目?
filter capabilities known from the Simple API 也可以在订阅 API 中使用。为此,您可以在 filter
对象中使用 node
属性。下面是一些实际的订阅过滤器示例:
订阅创建的照片
使用mutation_in
,我们可以决定是否要监听创建、更新或删除的事件(或它们的混合):
subscription {
Photo(filter: {
mutation_in: [CREATED]
}) {
node {
id
title
url
}
}
}
订阅创建的照片并更新照片的特定字段
监听更新时,我们可以进一步指定只监听特定字段的更新,使用updatedFields_contains
、updatedFields_contains_every
和updatedFields_contains_some
:
subscription {
# we can only use `updatedFields_x` filters together with `UPATED`
# so we use OR
Photo(filter: {
OR: [{
mutation_in: [UPDATED]
updatedFields_contains: "title"
}, {
mutation_in: [CREATED]
}]
}) {
previousValues {
title # contains old title
}
node {
id
title # contains new title
url
}
}
}
订阅某张照片的更新
对于所有订阅查询,我们可以使用node
进一步细化订阅条件。这与用于 allPhoto
的过滤器相同,例如:
subscription updatedPhoto($id: ID!) {
Photo(filter: {
mutation_in: [UPDATED]
node: {
id: $id
}
}) {
previousValues {
title # contains old title
}
node {
id
title # contains new title
url
}
}
}