我想使用Amplify来给AppSync的订阅添加参数
1. 经过
在阅读网上的文章时,我发现Amplify的版本似乎过旧?因为当我直接复制粘贴时出现了错误,所以我在这里记录下来作为备忘。
如果保持默认设置,所有数据都会被订阅,因此只想让特定RoomID的内容发生订阅。
在概念上,我希望使用Amplify/目录下的schema.graphql文件来生成带有参数的subscription,而不是生成默认的subscription。
2.结果
通过在 schema.graphql 的 @model 后添加 subscriptions: null 参数,可以将应该由 Amplify 自动创建的 subscription 函数转换为带有参数的函数。接下来只需要设置希望带有参数的函数。在本例中,只有 onCreateTodo 会订阅 room_id。
type Todo @model(subscriptions: null) {
id: ID!
room_id: String
content: String
description: String
}
type Subscription {
onCreateTodo(room_id: String): Todo @aws_subscribe(mutations: ["createTodo"])
}
3. 说明
一旦更改了上述的内容,执行Amplify push后,它自动在 src/graphql 目录下的 subscriptions.js文件中添加了参数并进行了部署✨
如果确认已经更改了下面的内容,请在每个使用onCreateTodo的文件中添加以下参数。这样就可以确认参数的值已经被订阅了。
export const onCreateTodo = /* GraphQL */ `
subscription OnCreateTodo($room_id: String) {
onCreateTodo(room_id: $room_id) {
id
room_id
content
description
createdAt
updatedAt
}
}
`;
4. 最后
如果您愿意的话?,如果您给予我鼓励✨,我将非常感激。