Javascript GraphQL突变如何与类型关联

Javascript GraphQL突变如何与类型关联,javascript,reactjs,graphql,prisma,Javascript,Reactjs,Graphql,Prisma,当我按照以下方式设置模式时: type Mutation { createUser(data: CreateUserInput!): User! } type User { id: ID! name: String! password: String! email: String! posts: [Post!]! comments: [Comment!]! } 我的解析器: const Mutation = { async cr

当我按照以下方式设置模式时:

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与我的用户模型相关联?我可以设置它,以便createUser在生成令牌后返回令牌而不是用户,或者我可以将createUser重命名为createPerson。我从未定义createUser和User之间的关联。我不确定如何将通过createUser输入的数据直接保存在用户表中,而不是另一个表中

两者之间没有关联

您的解析器可以同样轻松地返回包含一些虚拟数据的普通对象:

async createUser(parent, args, { prisma }, info) {
  ...
  return { 
    id: 1,
    name: 'Kevvv',
    password: 'password',
    email: 'kevvv@stackoverflow.com',
  }
}
或者使用其他方式获取用户:

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

prisma.mutation.createUser返回解析为表示已创建用户的对象的承诺。此对象的属性恰好与您在架构中指定的用户类型匹配,但除此之外,它并没有什么特别之处。

您是在询问您的模式和prisma.mutation.createUser中的用户类型吗?是的,这是正确的。那么,mutation如何在我的Postgres或MongoDB中创建一个名为User的表呢?游乐场界面还会自动显示所有用户属性,如名称、电子邮件、,etc在执行CreateUserOther时,您的变异会在数据库中创建一行,因为您在其解析器中调用prisma.mutation.createUser。Prisma客户端是根据您为Prisma服务器提供的数据模型定义自动生成的。您定义了一个用户数据模型,在生成客户端时,它会自动创建相应的Prisma客户端方法。PLAYOND显示的是模式中的用户类型,而不是Prisma中的用户类型。这二者只有在您的模式将它们联系起来的情况下才是相关的。例如,您可以调用模式类型User,但可以调用datamodel Person。然后,您的表将被称为Person,客户端调用将是prisma.translations.createPerson,但其他任何内容都不会改变。我想我仍然感到困惑。在MongoDB中,我在我的解析器中具体地实例化了类似于新用户{User:req.userId}的东西,以便使突变与用户模型相关联。在上面的Prisma示例中,没有提到解析器中的任何类型。如果我的数据模型中的MemberA和MemberB具有相同的属性,例如名称和电子邮件(这是一个人为的示例),那么我的解析器createMember如何知道与哪一个关联?