Итак, у меня есть следующее в моей модели данных Prisma.Существует связь между играми и персонажами, где персонажи могут появляться в нескольких играх.Кроме того, персонажи должны иметь возможность быть в списке в играх, когда запрашиваются только игры:
type Game {
id: ID! @unique
name: String! @unique
name_ja: String @unique
name_ko: String @unique
name_zh_CN: String @unique
name_zh_TW: String @unique
name_zh_HK: String @unique
characters: [Character]
filters: [GameFilter]
}
type Character {
id: ID! @unique
name: String! @unique
name_ja: String @unique
name_ko: String @unique
name_zh_CN: String @unique
name_zh_TW: String @unique
name_zh_HK: String @unique
games: [Game]
}
У меня тогда есть это как мутация для обновления персонажей в моей схеме.Я передаю массив идентификаторов игр, потому что существует возможность добавления нескольких игр в одну и ту же мутацию:
updateCharacter(
name: String
name_ja: String
name_ko: String
name_zh_CN: String
name_zh_HK: String
name_zh_TW: String
id: ID!
games: [ID]
): Character!
И записана следующая мутация:
async updateCharacter(parent, args, ctx, info) {
if (!ctx.request.userId) {
throw new Error('You must be logged in');
}
const updates = {...args};
delete updates.id;
delete updates.games;
console.log(args.games);
const res = await ctx.db.mutation.updateCharacter({
data: updates,
games: {
connect: {
id: args.games
}
},
where: {
id: args.id
}
}, info);
return res;
}
И следующая мутациянаписано React-сторона.Он предназначен для передачи массива идентификаторов в мутацию (что ожидается, потому что схема предполагает, что массив идентификаторов будет передан:
const UPDATE_CHARACTER_MUTATION = gql`
mutation UPDATE_CHARACTER_MUTATION(
$name: String!
$name_ja: String!
$name_ko: String!
$name_zh_CN: String!
$name_zh_TW: String!
$name_zh_HK: String!
$id: ID!
$games: [ID]!
) {
updateCharacter(
name: $name
name_ja: $name_ja
name_ko: $name_ko
name_zh_CN: $name_zh_CN
name_zh_TW: $name_zh_TW
name_zh_HK: $name_zh_HK
games: $games
id: $id
) {
id
name
name_ja
name_ko
name_zh_CN
name_zh_TW
name_zh_HK
games {
id
name
}
}
}
`;
Я также передаю идентификаторы игрв массиве onSubmit внутри формы для мутации.
В результате мутация проходит, но обновляет только поля имени, а связь с играми остается неизменной.
Не уверенчто я могу сделать, чтобы сделать это мутирование должным образом. Я не уверен, что передача массива непосредственно в мутацию в соединении является причиной проблемы, но я попытался отобразить и передать каждый идентификатор игры по отдельности, но у меня был тот же результатсоединения не обновляются.