当我按如下方式设置架构时:
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
表而不是其他表中。 最佳答案
两者之间没有关联。
您的解析器可以轻松地返回带有一些伪数据的普通对象:
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
类型匹配的属性,但是除此之外,没有任何“特殊”的东西。