我想使用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. 最后

如果您愿意的话?,如果您给予我鼓励✨,我将非常感激。

广告
将在 10 秒后关闭
bannerAds