GraphQL Mutation 如何将自身与 Type 关联起来

How does GraphQL Mutation associate itself with Type

当我按如下方式设置架构时:

type Mutation {
    createUser(data: CreateUserInput!): User!
}

type User {
    id: ID!
    name: String!
    password: String!
    email: String!
    posts: [Post!]!
    comments: [Comment!]!
}

和我的解析器:

const Mutation = {
    async createUser(parent, args, { prisma }, info) {
        if(args.data.password.length < 8) {
            throw new Error("Pasword must be 8 characters or longer")
        }
        return prisma.mutation.createUser({ 
            data: {
                ...args.data,
                password
            } 
        })
    }
}

GraphQL 如何知道 createUser 与我的 User 模型相关联?我可以将其设置为 createUser returns 令牌而不是用户(在生成令牌后),或者我可以将 createUser 重命名为 createPerson。我从来没有定义createUserUser之间的关联。我不确定我通过 createUser 输入的数据如何被定向保存在 user table,而不是另一个 table。

两者之间没有关联。

您的解析器可以很容易地return一个带有一些虚拟数据的普通对象:

async createUser(parent, args, { prisma }, info) {
  ...
  return { 
    id: 1,
    name: 'Kevvv',
    password: 'password',
    email: 'kevvv@whosebug.com',
  }
}

或使用其他方式获取用户:

async createUser(parent, args, { prisma }, info) {
  ...
  return fetchUserFromAPI()
  // or some other data source like a DB
}

prisma.mutation.createUser return 是一个 Promise,它解析为代表创建的用户的对象。该对象恰好具有与您在模式中指定的 User 类型相匹配的属性,但除此之外没有任何 "special" 关于它。