Appsync:订阅数组中的元素
Appsync: Subscribe to element in array
关于 AWS AppSync 有没有办法订阅数组中的元素,例如:
onSendMessage(recipientIds:[myID,otherPotentiallyRandomAndUnknownIds]) {
}
我试过简单地添加我正在寻找的元素,但是如果我缺少其他元素(并且也是按顺序),它不会触发订阅
不幸的是,这是一件无法轻易完成的事情。另外,正如您所指出的,顺序很重要,因为在 GraphQL 中,它应该被视为一个列表(已排序)。因此,订阅会触发您在模式上提供的顺序。它还需要您在列表中提供的确切参数,因为 GraphQL Schema 本质上被客户视为合同,因此如果合同规定订阅在列表中,这些元素按此顺序排列 - 那么它将根据以下内容启动订阅那。
现在你可以做的是设置一个发电机流(假设 DynamoDB 作为你的数据源),它将 table 上的任何变化提供给一个 lambda,你可以从那里对 AppSync 进行突变(取决于如果对数组中的元素进行了更改)以触发订阅(仅针对此用例设置简单 mutation/subscriptions)。这是一种 hack-y 解决方法,您可能还可以探索其他新颖的解决方案。
关于 AWS AppSync 有没有办法订阅数组中的元素,例如:
onSendMessage(recipientIds:[myID,otherPotentiallyRandomAndUnknownIds]) {
}
我试过简单地添加我正在寻找的元素,但是如果我缺少其他元素(并且也是按顺序),它不会触发订阅
不幸的是,这是一件无法轻易完成的事情。另外,正如您所指出的,顺序很重要,因为在 GraphQL 中,它应该被视为一个列表(已排序)。因此,订阅会触发您在模式上提供的顺序。它还需要您在列表中提供的确切参数,因为 GraphQL Schema 本质上被客户视为合同,因此如果合同规定订阅在列表中,这些元素按此顺序排列 - 那么它将根据以下内容启动订阅那。
现在你可以做的是设置一个发电机流(假设 DynamoDB 作为你的数据源),它将 table 上的任何变化提供给一个 lambda,你可以从那里对 AppSync 进行突变(取决于如果对数组中的元素进行了更改)以触发订阅(仅针对此用例设置简单 mutation/subscriptions)。这是一种 hack-y 解决方法,您可能还可以探索其他新颖的解决方案。