amazon-web-services - `appsync` 是否支持订阅中的 `withFilter`?
问题描述
我有一个用 nodejs 编写的 graphql,带有Apollo Server
. 下面是subscription
代码。如您所见,它使用withFilter
了两个函数参数。
在第一个函数中,它接受参数和调用pubSub.subscribe('TRANSACTION_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 中,您将无法在增量过滤订阅事件时进行记录,但您可以让用户提供要过滤的属性,以便生成的订阅事件相同。
这Event
只是您的突变返回的对象的类型:
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
只有当突变也请求这些属性时才会返回
推荐阅读
- python - 在图像中绘制水平和垂直线
- python - 使用 TF 1.15.5 的 model_main.py 时,评估 mAP 图很快会产生 0 并保持在那里
- python - 没有名为“object_detection”的模块如何将模型\研究添加到 PYTHONPATH?
- reactjs - 处理获取的数据 - RTK Query / Redux 工具包 / React
- java - 不使用 Hibernate 连接关系的左连接
- select - 面板打开时在 mat 选项中显示额外的值
- python - 如何根据生日日期计算年龄,Python Pandas 中的时间戳和日期时间问题?
- excel - 如何合并行中重复的单元格值?我的代码忽略了一些重复的值
- firebase - firebase 中的崩溃报告,但不幸的是,应用程序中没有崩溃。如何解决这个问题
- python - 按多个日期范围过滤数据框