AWSAppSyncClient 未检测到 graphql 查询
Posted
技术标签:
【中文标题】AWSAppSyncClient 未检测到 graphql 查询【英文标题】:AWSAppSyncClient does not detect graphql queries 【发布时间】:2019-05-30 20:55:11 【问题描述】:我在我的 android 应用程序中使用 AWS AppSync
并关注 this 链接,但我已经在我的 AppSync 中创建了 API,我希望将其导入到我的 Android 应用程序中。我正在使用 Amplify
链接应用程序。
【问题讨论】:
您是否尝试过使用 ctrl+空格键。 当然!现在,我又犯了一个错误。 您提到您下载了架构。这应该由 Amplify CLI 完成。只是验证您没有手动移动某些东西。 @donkon 你是对的。我确实重复了这个过程,它是自动生成的,但现在我面临另一个问题。 【参考方案1】:Ok.So 原来AppSync
中的查询是由不熟悉命名约定的开发人员创建的,他在查询中加上“_”(下划线),当这些查询由Amplify
处理,它只从type
、mutation
和query
名称中删除所有_,而不是从它们内部的方法中删除。例如,
type Query
getDaily_Build(id: ID!): Daily_Build
在 AppSync 中在 Android 中的 queries.graphql
中生成以下查询
query GetDailyBuild($id: ID!)
getDaily_Build(id: $id)
id
username
title
这给出了错误
GraphQL 查询文档验证失败。
我按照命名约定更改了架构,并避免使用“_”之类的特殊字符,现在它可以正常工作了。
【讨论】:
下划线处理至少在 ios AppSync SDK 中是一个已知问题:github.com/awslabs/aws-mobile-appsync-sdk-ios/issues/137 因为该问题描述了与代码生成端的交互,它也可能影响 Android。 感谢您的意见。在你提到之前,我在 iOS 方面并不知道它,希望这对 iOS 开发人员也有帮助:)【参考方案2】:您是否在 gradle 文件中配置了所有必需的插件和库..
apply plugin: 'com.amazonaws.appsync'
implementation 'com.amazonaws:aws-android-sdk-appsync:2.6.+'
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
并且在清单中您需要具有以下权限。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
并且你需要在你的应用标签中有以下服务。
<service android:name="org.eclipse.paho.android.service.MqttService" />
【讨论】:
是的。我还添加了这些库implementation('com.amazonaws:aws-android-sdk-mobile-client:2.8.+@aar') transitive = true
implementation('com.amazonaws:aws-android-sdk-auth-userpools:2.8.+@aar') transitive = true
implementation('com.amazonaws:aws-android-sdk-auth-ui:2.8.+@aar') transitive = true
和 implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.9.2'
以上是关于AWSAppSyncClient 未检测到 graphql 查询的主要内容,如果未能解决你的问题,请参考以下文章
设置 AWSAppSyncClient、Apollo 和 React 的正确方法