Ошибка записи результата для сохранения по запросу.Не удается прочитать свойство 'query' из неопределенного - PullRequest
0 голосов
/ 25 сентября 2018

Я получаю сообщение об ошибке при написании запроса для сохранения после мутации.Мутация работает, и я могу прочитать запрос после мутации.Когда я пишу тот же запрос в кэш магазина, я получаю следующую ошибку:

index.js:2178 Error: Error writing result to store for query:
 query ($applicationId: Int) {
  vApplicationApprovalChainList(ApplicationId: $applicationId) {
    id
    approvalOrder
    approverId
    name
    applicationId
    __typename
  }
}

Cannot read property 'vApplicationApprovalChainList' of undefined
    at writeToStore.js:101
    at Array.forEach (<anonymous>)
    at writeSelectionSetToStore (writeToStore.js:97)
    at writeResultToStore (writeToStore.js:75)
    at InMemoryCache../node_modules/apollo-cache-inmemory/lib/inMemoryCache.js.InMemoryCache.write (inMemoryCache.js:99)

Вот мой код .. мутация и store.readQuery работает, но store.writeQuery выдает ошибку выше.Заранее спасибо за любые отзывы.

APPROVERSLIST_QUERY = gql`
query ($applicationId:Int){
 vApplicationApprovalChainList(ApplicationId:$applicationId){
  id
  approvalOrder
  approverId  
  name
  applicationId  

  }
}

`;


 handleClick() {
        const { row, mutate} = this.props;
        mutate({
            variables: {
                id: row.id
            },
            update: (store, { data: { deleteApprover } }) => {

                const newdata = store.readQuery({
                    query: APPROVERSLIST_QUERY,
                    variables: { applicationId: row.applicationId }
                });
                console.log(newdata);
                newdata.vApplicationApprovalChainList = newdata.vApplicationApprovalChainList.filter(approver => approver.id !== deleteApprover.id);
                store.writeQuery({
                    query: APPROVERSLIST_QUERY, newdata });
                }
        });



    }

1 Ответ

0 голосов
/ 25 сентября 2018

Вы не передаете новые данные в writeQuery.Объект, переданный в writeQuery, должен иметь свойство с именем data, содержащее новые данные.Кроме того, поскольку ваш запрос содержит переменные, вам нужно будет также включить эту информацию.

store.writeQuery({
  query: APPROVERSLIST_QUERY,
  data: newdata,
  variables: {
    applicationId: row.applicationId,
  },
});

Пожалуйста, смотрите официальные документы для большего количества примеров и более подробного объяснения двух методов..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...