Amazon web services “appsync”是否支持订阅中的“withFilter”?

Amazon web services “appsync”是否支持订阅中的“withFilter”?,amazon-web-services,graphql,aws-appsync,Amazon Web Services,Graphql,Aws Appsync,我用nodejs编写了一个带有阿波罗服务器的graphql。以下是订阅代码。正如您所看到的,它使用带过滤器的,,其中包含两个函数参数 在第一个函数中,它接受参数并调用pubSub.subscribe('TRANSACTION\u REQUEST'+args.transactionId)来订阅主题。请注意,主题名称是一个动态名称,其中包括来自用户请求的事务ID 在第二个函数中,它过滤掉不匹配的userId 因此,我的问题是如何在Appsync中实现这两个函数 const resolvers = {

我用nodejs编写了一个带有阿波罗服务器的graphql。以下是
订阅
代码。正如您所看到的,它使用带过滤器的
,其中包含两个函数参数

在第一个函数中,它接受参数并调用
pubSub.subscribe('TRANSACTION\u REQUEST'+args.transactionId)
来订阅主题。请注意,主题名称是一个动态名称,其中包括来自用户请求的事务ID

在第二个函数中,它过滤掉不匹配的userId

因此,我的问题是如何在
Appsync
中实现这两个函数

const resolvers = {
...
  Subscription: {
    requestTransaction: {
      subscribe: withFilter(
        (rootValue: any, args: any, context: any, info: any) => {
          console.log('req txn with filter args', args);
          return pubSub.subscribe('TRANSACTION_REQUEST' + args.transactionId)(
            rootValue,
            args,
            context,
            info,
          );
        },
        (transactionResponse: any, transactionRequest: any) => {
          console.log('with filter transaction');
          console.log('subscribe:', transactionResponse, transactionRequest);
          return (
            transactionResponse.userId ===
            transactionRequest.transactionInput.userId
          );
        },
      ),
    },
  },
...

在AppSync中,您将无法在增量筛选订阅事件时进行日志记录,但您可以让用户提供筛选依据的属性,以便生成的订阅事件相同

这里的
事件
只是您返回的对象的类型:

type Subscription {
    subscribeTransaction(topic: String userId: String): Event
            @aws_subscribe(mutations: ["fooMutation"])
}
要启动订阅,请执行以下操作:

subscription onTransact {
    subscribeTransaction(topic: "TRANSACTION_REQUEST" + args.transactionId userId: args.userId){
        id
        foo
        bar
    }
}
注:

  • 名称
    onTransact
    是任意的
  • 假设
    transactionId
    userId
    args中传递
  • id
    foo
    bar
    只有在突变也请求这些属性时才会返回

在AppSync中,您将无法在增量筛选订阅事件时进行日志记录,但您可以让用户提供筛选依据的属性,以便生成的订阅事件相同

这里的
事件
只是您返回的对象的类型:

type Subscription {
    subscribeTransaction(topic: String userId: String): Event
            @aws_subscribe(mutations: ["fooMutation"])
}
要启动订阅,请执行以下操作:

subscription onTransact {
    subscribeTransaction(topic: "TRANSACTION_REQUEST" + args.transactionId userId: args.userId){
        id
        foo
        bar
    }
}
注:

  • 名称
    onTransact
    是任意的
  • 假设
    transactionId
    userId
    args中传递
  • id
    foo
    bar
    只有在突变也请求这些属性时才会返回