【问题标题】:Creating two types of data at once in a single resolver (Graphql + Prisma)在单个解析器中一次创建两种类型的数据 (Graphql + Prisma)
【发布时间】:2020-10-18 05:53:54
【问题描述】:

当用户创建 Post 类型的数据时,我还需要 graphql 服务器自动创建 Commit 类型的数据。 Commit 类型连接到 User 类型和 Post 类型。这是 User 类型、Post 类型和 Commit 类型的 graphql 模式:

type User {
  id: ID!
  username: String!
  commits: [Commit!]!
}

type Post {
  id: ID!
  title: String!
  content: String
  commits: [Commit!]!
}

type Commit {
  id: ID!
  user: User!
  post: Post!
}

所以我做了一个 createPost 突变。 createPost 突变必须同时完成两项工作:创建 Post,然后创建 Commit。 Commit 数据应该连接到新创建的 Post 数据。以下是我到目前为止想出的解析器:

Mutation: {
  createPost: async (_, args) => {
    const {user, title, content} = args;
    await prisma.createPost({
      title,
      content
    });
    const postId = await prisma.post({title}).id();
    await prisma.createCommit({
      user: {connect: {id: user.id}},
      post: {connect: {id: postId }}
    });
    const newPost = await prisma.post({id:postId});
    return newPost;
  }
}

这是一种有效的方法吗?或者有更好的方法吗?

【问题讨论】:

    标签: graphql prisma prisma-graphql


    【解决方案1】:

    我认为这也可以:

    Mutation: {
      createPost: async (_, args) => {
        const {user, title, content} = args;
        const post = await prisma.createPost({
          title,
          content
        });
        await prisma.createCommit({
          user: {connect: {id: user.id}},
          post: {connect: {id: post.id }}
        });
        return post;
      }
    }
    

    Prisma 返回创建的记录,因此您无需再次查询。

    【讨论】:

      猜你喜欢
      • 2019-09-07
      • 2021-03-10
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 2019-09-29
      • 2017-08-13
      • 2019-09-03
      相关资源
      最近更新 更多