在Appsync订阅的schema中,添加一个自定义订阅解析器,使用AWS Lambda函数来进行嵌套过滤。
示例代码:
在schema中添加以下自定义订阅解析器:
type Subscription {
mySubscription(filter: MySubscriptionFilterInput): MySubscriptionPayload
}
input MySubscriptionFilterInput {
nestedObjFilter: MyNestedObjFilterInput
}
input MyNestedObjFilterInput {
fieldToFilter: String!
}
type MySubscriptionPayload {
nestedObj: MyNestedObj
}
type MyNestedObj {
fieldToFilter: String
otherField: String
}
Lambda函数示例:
exports.handler = (event, context, callback) => {
const fieldToFilter = event.arguments.filter.nestedObjFilter.fieldToFilter;
const filteredNestedObj = event.context.result.nestedObj.filter(obj => {
return obj.fieldToFilter === fieldToFilter;
});
event.context.result.nestedObj = filteredNestedObj;
callback(null, event);
};
在Appsync中创建一个Lambda函数数据源,并将自定义订阅解析器指向该数据源。在使用订阅时,使用filter参数进行嵌套过滤,如以下示例:
subscription {
mySubscription(filter: {nestedObjFilter: {fieldToFilter: "example"}}) {
nestedObj {
fieldToFilter
otherField
}
}
}