使用@client 的cache.readQuery 引发:无法读取未定义的属性“种类”

Posted

技术标签:

【中文标题】使用@client 的cache.readQuery 引发:无法读取未定义的属性“种类”【英文标题】:cache.readQuery using @client raises: Cannot read property 'kind' of undefined 【发布时间】:2019-01-26 08:18:51 【问题描述】:

我创建了非常简单的“登录”页面,它应该将“电子邮件”和“密码”存储在本地缓存中,然后在提交时在控制台上显示存储的值(这是通过 resolvers.js 中的突变完成的) .

将电子邮件和密码值保存到缓存似乎可以正常工作,但每次我尝试从缓存中读取值时,我都会收到“网络错误:无法读取未定义的属性‘种类’”。任何线索有什么问题?

我的最小示例: https://codesandbox.io/s/jv6mx6yoo9

【问题讨论】:

【参考方案1】:

问题是在调用 readQuery 时缺少 query 参数名称(感谢@hwillson on apollo-react #slack 指出这一点):

const LOGIN_DATA_QUERY = gql`
    query GetLoginData 
        email @client      
        password @client      
    
`;
// (...)

const data = cache.readQuery( LOGIN_DATA_QUERY );

应该是:

const data = cache.readQuery( query: LOGIN_DATA_QUERY );

【讨论】:

以上是关于使用@client 的cache.readQuery 引发:无法读取未定义的属性“种类”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OAuth2 中仅使用 Client_id 和 Client_secret

使用服务帐户 oauth2client.client.CryptoUnavailableError 的 Google API 访问:没有可用的加密库

使用 Apple 登录 = invalid_client

windows下使用 fdfs_client 上传文件

AdWords 范围:使用 OAuth 流程进行身份验证后缺少 gapi.client.adwords。找不到要传递给 gapi.client.request() 的路径变量

ThreadSafeClientConnManager用来支持多线程的使用http client