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

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返回令牌而不是User(生成令牌后),也可以将createUser重命名为createPerson。我从未定义createUserUser之间的关联。我不确定通过createUser输入的数据如何定向保存在user表而不是其他表中。

最佳答案

两者之间没有关联。

您的解析器可以轻松地返回带有一些伪数据的普通对象:

async createUser(parent, args, { prisma }, info) {
  ...
  return {
    id: 1,
    name: 'Kevvv',
    password: 'password',
    email: '[email protected]',
  }
}


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

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


prisma.mutation.createUser返回一个Promise,该Promise解析为一个代表所创建用户的对象。该对象碰巧具有与您在架构中指定的User类型匹配的属性,但是除此之外,没有任何“特殊”的东西。

10-07 17:52