Apollo Graphql订阅:用于创建、更新和维护的不同订阅解析程序;删除还是单个冲突解决程序?
我正在使用Typegrpahql使用express创建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
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)代码>