На сервере я построил схему, в которой я использовал, и тип ввода, чтобы получить возможность передавать массив объектов.Я сделал это в нескольких местах, но это, безусловно, самый простой:
export default gql`
input SkillInput{
skill: String!
}
extend type Mutation {
createSkill(input: [SkillInput]): [Skill]!
}
type Skill {
id: ID!
skill: String!
created_at: DateTime!
}
`;
На веб-интерфейсе я могу выполнить мутацию с указанным массивом объектов просто отлично.Проблема возникает, когда я пытаюсь включить оптимистический ответ.
Это мутация, о которой идет речь:
this.$apollo
.mutate({
mutation: CREATE_SKILL_MUTATION,
variables: { input: skillArrOfObj },
optimisticResponse: {
__typename: "Mutation",
createSkill: skillArrOfObj.map(entry => ({
__typename: "Skill",
id: -1,
skill: entry.skill
}))
},
update: (store, { data: { createSkill } }) => {
const data = store.readQuery({
query: SKILLS_QUERY
});
console.log(createSkill);
data.skills.push(...createSkill);
store.writeQuery({
query: SKILLS_QUERY,
data
});
}
})
Я пытался добавить к каждой записи skillArrOfObj __typename и id, однакомутация завершается ошибкой.
Еще одна вещь, которую стоит упомянуть, это то, что обновление запускается дважды, а журнал createSkill дает два разных результата при обновлении:
Первый запуск
{__typename: "Skill", id: -1, skillObj: Array(2)}
id: -1
skillObj: (2) [{…}, {…}]
__typename: "Skill"
Второй запуск показываетмассив только id и __typename без атрибута навыка
Требуется ли специальное __typename для массивов?Или что-то, что мне нужно сделать перед запуском мутации?