Prisma не может создать тип пользователя из-за аргумента массива?
Это мой InputType в schema.graphql:
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>
}
эта ошибка будет повторяться в зависимости от того, сколько элементов находится в массиве, например: Unknown arg '1' и так далее, такое же сообщение об ошибке, как мне это исправить?
2 ответа
Решение
Со мной случилось раньше, оказалось, это была ошибка запроса.
mutation {
createFruit(data:{
name: "Banana",
images: {
set: ["image_1.img", "image_2.img"]
}
}) {
name
images
}
}
Обратите внимание, это не images: ["image_1.img", "image_2.img"]
Fyi с призмой вы можете сделать t.model.interest()
при определении objectType
Вы должны предоставить список строк для set
аргумент, например:
type UserCreateInterestsInput {
set?: List<String>
}
Обратитесь к этому вопросу для получения дополнительной информации.
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;
},
});
Надеюсь это поможет