如何订阅过滤器?

时间:2019-03-07 04:30:43

标签: graphql aws-appsync aws-amplify

是否有一种订阅方式可以接收输入过滤器作为类似于查询和变异的参数?

当前,我的订阅没有数据源,并且我只想在此字段以此值开头的情况下接收订阅。

样本突变响应

{
  taskId: "personal-<uuid>",
  name: "Personal Task 1",
  ...
}

基本上,我只希望有一个订阅来检查所有任务更新,其中taskId beginsWithString “个人”

架构

input TableStringFilterInput {
  ne: String
  eq: String
  le: String
  lt: String
  ge: String
  gt: String
  contains: String
  notContains: String
  between: [String]
  beginsWith: String
}

input TaskInput {
  taskId: ID!
  ...
}

input TaskFilterInput {
  taskId: TableStringFilterInput
}

mutation updateTask(task: TaskInput) :  Task
subscription onTaskUpdated(filter: TaskFilterInput) : Task
@aws_subscribe(mutations, ["updateTask"])

使用Appsync的查询控制台测试订阅

subscription TaskUpdated {
  onTaskUpdated(filter: {
    taskId : { beginsWith: "personal" },
  }) {
    taskId
    name
  }
}

1 个答案:

答案 0 :(得分:0)

https://docs.aws.amazon.com/appsync/latest/devguide/real-time-data.html

您可以传递这样的参数

subscription TaskUpdated {
    onTaskUpdated(taskCategory: "personal"){
        taskId
        taskCategory
        name
    }
}

如果可以向任务类型添加另一个属性taskCategory ...可能会解决您的问题。

您的另一个选择是在您的应用中进行过滤