由于数组参数,Prisma 无法创建用户类型?
Posted
技术标签:
【中文标题】由于数组参数,Prisma 无法创建用户类型?【英文标题】:Prisma cannot create a user type because of array argument? 【发布时间】:2020-09-04 17:50:36 【问题描述】:这是我在 schema.graphql 中的 InputType:
input RegisterInput
birthday: String!
email: String!
firstName: String!
gender: String!
interests: [String!]!
lastName: String!
password: String!
这是我的突变:
const RegisterInput = inputObjectType(
name: 'RegisterInput',
definition(t)
t.string('birthday', nullable: false );
t.string('email', nullable: false );
t.string('firstName', nullable: false );
t.string('lastName', nullable: false );
t.string('gender', nullable: false );
t.string('password', nullable: false );
t.list.field('interests',
type: 'String',
nullable: false,
);
,
);
const Mutation = objectType(
name: 'Mutation',
definition(t)
t.field('register',
type: User,
args:
data: arg( type: RegisterInput ),
,
resolve: async (
_root,
data: password, interests, ...userData ,
prisma
) =>
const hashedPassword = await bcrypt.hash(password, 10);
const user = await prisma.user.create(
data:
...userData,
interests: [...interests],
password: hashedPassword,
,
);
return user;
,
);
我的兴趣只是一个字符串数组,例如:['abcd', 'def']
但我得到了这个错误:
Unknown arg `0` in data.interests.0 for type UserCreateInterestInput. Available args:
type UserCreateInterestsInput
set?: List<String>
该错误将根据数组中的项目数重复出现,例如:未知 arg '1' 等等,同样的错误消息,我该如何解决?
【问题讨论】:
【参考方案1】:您必须向set
参数提供字符串列表,例如:
type UserCreateInterestsInput
set?: List<String>
请参阅此issue 了解更多信息。
const Mutation = objectType(
name: 'Mutation',
definition(t)
t.field('register',
type: User,
args:
data: arg( type: RegisterInput ),
,
resolve: async (
_root,
data: password, interests, ...userData ,
prisma
) =>
const hashedPassword = await bcrypt.hash(password, 10);
const user = await prisma.user.create(
data:
...userData,
interests: set: interests,
password: hashedPassword,
,
);
return user;
,
);
希望对你有帮助
【讨论】:
【参考方案2】:之前发生在我身上,原来是查询错误。
mutation
createFruit(data:
name: "Banana",
images:
set: ["image_1.img", "image_2.img"]
)
name
images
注意不是images: ["image_1.img", "image_2.img"]
你可以在定义 objectType 时使用 prisma t.model.interest()
【讨论】:
这是为使用t.crud
方法的人准备的以上是关于由于数组参数,Prisma 无法创建用户类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数组作为参数传递给 Nexus?如何使用 Prisma 从这个数组创建多个对象?