Apollo Graphql订阅:用于创建、更新和维护的不同订阅解析程序;删除还是单个冲突解决程序?

Apollo Graphql订阅:用于创建、更新和维护的不同订阅解析程序;删除还是单个冲突解决程序?,graphql,typegraphql,Graphql,Typegraphql,我正在使用Typegrpahql使用express创建graphql服务器。我想澄清是否应该为实体的创建、更新和删除操作创建单独的订阅解析程序?或者我应该创建一个解析器,因为数据的返回类型总是相同的 假设我有一个这样的实体 type Board { createdAt: DateTime! id: ID! members: [User!]! name: String! owner: User! stacks: [Stack!]! updatedAt: DateTime

我正在使用Typegrpahql使用express创建graphql服务器。我想澄清是否应该为实体的创建、更新和删除操作创建单独的订阅解析程序?或者我应该创建一个解析器,因为数据的返回类型总是相同的

假设我有一个这样的实体

type Board {
  createdAt: DateTime!
  id: ID!
  members: [User!]!
  name: String!
  owner: User!
  stacks: [Stack!]!
  updatedAt: DateTime
}
@Resolver(Board)
export class BoardMuations {
  @Authorized()
  @Mutation(() => Board)
  async createBoard(
    @PubSub() pubSub: PubSubEngine,
    @Arg("name") name: string,
    @Ctx() { uid }: MyContext
  ): Promise<Board> {
    // perform create opration
  }

  @Authorized()
  @Mutation(() => Board)
  async updateBoard(
    @PubSub() pubSub: PubSubEngine,
    @Arg("boardId") boardId: string,
    @Arg("name") name: string
  ): Promise<Board | undefined> {
    // perform update operation
  }

  @Authorized()
  @Mutation(() => DeleteResponse)
  async deleteBoard(@PubSub() pubSub: PubSubEngine, @Arg("boardId") boardId: string): Promise<DeleteResponse> {
    //perform delete operation
  }
}

@Subscription({ topics: "CUD_BOARD" })
  newBoard(@Root() data: Board): Board {
    return data;
  }
我有一个像这样的变异解析器类

type Board {
  createdAt: DateTime!
  id: ID!
  members: [User!]!
  name: String!
  owner: User!
  stacks: [Stack!]!
  updatedAt: DateTime
}
@Resolver(Board)
export class BoardMuations {
  @Authorized()
  @Mutation(() => Board)
  async createBoard(
    @PubSub() pubSub: PubSubEngine,
    @Arg("name") name: string,
    @Ctx() { uid }: MyContext
  ): Promise<Board> {
    // perform create opration
  }

  @Authorized()
  @Mutation(() => Board)
  async updateBoard(
    @PubSub() pubSub: PubSubEngine,
    @Arg("boardId") boardId: string,
    @Arg("name") name: string
  ): Promise<Board | undefined> {
    // perform update operation
  }

  @Authorized()
  @Mutation(() => DeleteResponse)
  async deleteBoard(@PubSub() pubSub: PubSubEngine, @Arg("boardId") boardId: string): Promise<DeleteResponse> {
    //perform delete operation
  }
}

@Subscription({ topics: "CUD_BOARD" })
  newBoard(@Root() data: Board): Board {
    return data;
  }
还是应该为每个操作创建不同的解析程序?这个主题数组是什么

据我所知,我还可以将不同的主题字符串作为数组提供。创建不同的主题字符串并使用它们发布事件会有什么不同

我目前正在发布这样的事件
wait pubSub.publish(“CUD_BOARD”,BOARD)