我在 AWS DynamoDB 中有一个表,在集成完成后,我使用 AWS Amplify 将其与我的 Android 应用程序集成,方法是使用 - Amplify 文档 中解释的步骤,同时我尝试运行查询以从我的应用程序中获取数据。表,应用程序正在运行,但我在 logcat 中收到错误:
Failure encountered while attempting to start API sync
DataStoreException{message=DataStore subscriptionProcessor failed to
start., cause=GraphQLResponseException{message=Subscription error for Todo
Caused by: GraphQLResponseException{message=Subscription error for Todo: [GraphQLResponse.Error{message='Validation error of type FieldUndefined Field '_deleted' in type 'Todo' is undefined @ 'onUpdateTodo/_deleted'', locations='null', path='null', extensions='null'}, GraphQLResponse.Error{message='Validation error of type FieldUndefined: Field '_lastChangedAt' in type 'Todo' is undefined @ 'onUpdateTodo/_lastChangedAt'', locations='null', path='null', extensions='null'}, GraphQLResponse.Error{message='Validation error of type FieldUndefined: Field '_version' in type 'Todo' is undefined @ 'onUpdateTodo/_version'', locations='null', path='null', extensions='null'}], recoverySuggestion=See attached list of GraphQLResponse.Error objects.}
这是我的代码:
private void fetchTodo() {
String todoId = ""; //here i am giving the id of the data that i want to fecthD
Amplify.DataStore.query(
Todo.class,
Todo.ID.eq(todoId),
todos -> {
if (todos.hasNext()) {
Todo todo = todos.next();
runOnUiThread(() -> {
name.setText(todo.getName());
priority.setText(todo.getPriority().ordinal());
update.setText(todo.getUpdatedAt().getOffsetTotalSeconds());
});
} else {
Log.i("Tutorial", "No Todo found with the specified ID.");
}
},
failure -> Log.e("Tutorial", "Could not query DataStore", failure)
);
}
}
我按照 amplify docs 文档构建了多个项目,但这是每个项目中的常见问题。我想以编程方式从应用程序中的表中获取添加和获取数据。
如果您使用 Android,请使用适用于 Kotlin 的 AWS 开发工具包。在构建本机 Android 应用程序时,此 SDK 在 Android Studio 项目中非常有效。该 SDK 支持完整的 Kotlin 功能,例如协程 - Amplify 不支持。
请参阅此处的 Kotlin 开发指南:
https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/setup.html
此 SDK 的 DynamoDB 代码示例位于此处:
https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/dynamodb
以下演练向您展示如何使用此调用 AWS 服务的开发工具包构建 Android Studio 项目: