Получение `Store error: приложение попыталось записать объект без предоставленного typename, но хранилище уже содержит объект с typename`
Я получаю Store Error при обновлении, и я новичок в apollo и graphQL, поэтому не могу понять, что я делаю неправильно. Я пытаюсь обновить имя и фамилию человека. Этот объект является вложенным, и я передаю typeName как объект обернутого объекта. Если кто-то понимает это и может предложить, пожалуйста, дайте мне знать
Вот как это выглядит в Apollo:
ValidationType: возраст @ EmpId
persondetails: personDetailsType
первый: "abc"
empId: 10002
возраст: "21"
последний: "def"
Значения передаются отсюда:
<Button content="Save"
onClick={(_, {value}) => {
this.props.mutation({
variables: {
persondetails: {
first: this.state.first,
last: this.state.last,
empId: empId,
age: age
},
age,
empId,
}
});
}}
/>
Мой запрос на обновление выглядит примерно так:
updatePersonDetails: (
_,
{persondetails, age, empId},
{cache}
) => {
cache.writeFragment({
id: `validationType:${age}!${empId}`,
fragment: gql`
fragment updatePersonDetails on validationType {
persondetails {
first
last
age
empId
__typename
}
__typename
}
`,
data: {
persondetails: persondetails,
age,
empId,
__typename: 'validationType'
}
});
Я получаю ниже ошибку при обновлении:
[Network error]: Error: Error writing result to store for query:
{
...updatePersonDetails
}
fragment persondetails on validationType {
persondetails {
first
last
age
empId
__typename
}
__typename
}
Store error: the application attempted to write an object with no provided typename but the store already contains an object with typename of personDetailsType for the object of id $validationType!21.1002. The selectionSet that was trying to be written is:
persondetails {
first
last
age
empId
__typename
}
0 ответов
Я передавал объект неправильно в резольверах при передаче обновления. А также мне не хватало typeName в этом объекте. Правильный синтаксис был:
updatePersonDetails: (
_,
{persondetails, age, empId},
{cache}
) => {
cache.writeFragment({
id: `validationType:${age}!${empId}`,
fragment: gql`
fragment updatePersonDetails on validationType {
persondetails {
first
last
age
empId
__typename
}
__typename
}
`,
data: {
persondetails: {
...persondetails,
__typename: 'persondetailsType'
}
__typename: 'validationType'
}
});