首页 > 解决方案 > TypeGraphql:如何在 type-graphql 中触发订阅?

问题描述

一旦我使用以下突变创建新帖子,我的 graphql 订阅就会被触发。

@Mutation(() => Post)
  async createPost(
    @Arg("caption", () => String) caption: string,
    @PubSub() pubSub: PubSubEngine
  ): Promise<Post> {
    const post = await new Post(caption).save();
    const posts = await Post.find({});
    await pubSub.publish(Subscriptions.NEW_POST, post);
    await pubSub.publish(Subscriptions.ALL_POSTS, posts);
    return post;
  }

这是我的订阅的样子:

 @Subscription(() => Post, {
    topics: Subscriptions.NEW_POST,
  })
  newPost(@Root() postPayload: Post): Post {
    return postPayload;
  }

一切正常。当我第一次在 graphql 操场上收听订阅时

subscription{
  newPost{
    id
    caption
    createdAt
  }
}

唯一的问题是,它只在我创建新帖子时获取数据。我的问题是我如何向这个订阅发送一些默认数据,例如newPost:null在运行createPost突变之前的第一次监听时。

标签: typescriptgraphqltypegraphql

解决方案


推荐阅读