import { onCreateTodo } from './graphql/subscriptions';
const subscription = API.graphql({
query: onCreateTodo,
variables: { owner: 'myOwnerId' },
});
subscription.subscribe({
next: (data) => { console.log('todo added', data); },
error: (err) => console.error('Subscription Error', err),
});
在上述代码中,我们添加了一个 owner 变量作为过滤条件,只订阅与该 owner 匹配的 todo 添加事件。
在 GraphQL subscription 中,我们可以使用 Velocity 模板进行高级查询和筛选过滤。下面是一个简单的例子:
subscription OnCreateTodo{
onCreateTodo(
filter:{
and: [
{ owner: { eq: "myOwnerId" } },
{ completed: { eq: false } }
]
}
){
id
name
description
}
}
在上述代码中,我们添加了一个 filter 对象作为过滤条件,只订阅所有未完成的与 myOwnerId 匹配的 todo。
DynamoDB Streams 可以捕获 DynamoDB 表中所有更改,并使您可以监视和响应这些更改。可以使用它们来过滤和选项传入流事件,以仅处理与您的应用程序有关的项目。
const streamArn = '';
const subscription = API.graphql({
query: `subscription myStream($streamArn: String!) {
onCreateTodo(
stream: $streamArn
filter: {
referenceId: { beginsWith: "myOwnerId" }
}
) {
id
name
description
}
}`,
variables: {
streamArn,
},
});
subscription.subscribe({
next: (data) => { console.log('todo added', data); },
error: (err) => console.error('Subscription Error', err),
});
在上述代码中,我们添加了一个 referenceId 变量作为过滤条件,只订阅以 myOwnerId 开头的 todo 添加事件。