无法从我的 Android 应用程序中的 DynamoDB 表获取数据

问题描述 投票:0回答:1

我在 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 文档构建了多个项目,但这是每个项目中的常见问题。我想以编程方式从应用程序中的表中获取添加和获取数据。

java android amazon-web-services amazon-dynamodb datastore
1个回答
0
投票

如果您使用 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 项目:

创建使用适用于 Kotlin 的 AWS 开发工具包翻译消息的发布/订阅 Android 应用程序

© www.soinside.com 2019 - 2024. All rights reserved.