В AWS AppSync у меня есть следующая схема GraphQL.
type Mutation{
myMutation(id:String!): MyResponse
}
type Subscription{
mySubscription(ids:String):MyResponse @aws_subscribe(mutations: ["myMutation"])
}
type MyResponse{
ids:[String]
}
Моя цель - иметь возможность инициировать подписку 'mySubscription' всякий раз, когда мутация возвращает MyResponse, так что список 'ids' содержит один идентификатор, введенный в mySubscription.
Так, например, в React-Native я бы сделал следующее:
import * as subscriptions from '../graphql/subscriptions.js'
const mySub = await API.graphql(graphqlOperation(subscriptions.mySubscription,{ids:'1'})).subscribe({
next: (response) => {
// DO SOMETHING WITH RESPONSE
},
error: (err) => {
// CATCH ERROR
}
})
Я бы хотел, чтобы эта подписка запускалась всякий раз, когда myMutation генерировал ответ, такой как
data:{
myMutation:{
ids:['1','2']
}
}
или где ids - это любой другой список, если он содержит «1» (идентификатор, введенный вподписка).
Причина этого в том, что у меня есть события, которые должны запускать уведомления для клиентов, основываясь на том, кто был присоединен к мутации, где фактический список людей, прикрепленных к мутации, является динамическим. Было бы неплохо иметь возможность сказать «подписаться на любое событие, где список людей содержит мое имя», тип вещи.
Единственное, что мне нужно было сделать, - вызвать мутацию уведомления для каждого из людей. индивидуально, но это требует больше звонков на мой сервер и кажется намного сложнее, чем мне кажется. Любая помощь будет принята с благодарностью.