当我按如下方式设置架构时:
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
。我从未定义过createUser
和User
之间的关联。我不确定通过createUser
输入的数据如何定向保存在user
表中,而不是在另一个表中。
答案 0 :(得分:1)
两者之间没有关联。
您的解析器可以很容易地返回带有一些伪数据的普通对象:
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
返回一个Promise,该Promise解析为一个代表所创建用户的对象。该对象碰巧具有与您在架构中指定的User
类型相匹配的属性,但除此之外没有任何“特殊”的地方。