Список запросов только дает первую строку данных из таблицы с помощью AWS Amplify в Android - PullRequest
1 голос
/ 06 апреля 2019

плохо знакомы с AWS.Это может быть простой проблемой, но я застрял.

У меня есть таблица с несколькими строками в DynamoDB.Используя AWS Amplify, я запускаю запрос в своем коде Android, чтобы получить эти данные, но он даст мне только самую первую строку.

Вот мой метод onCreate

mAWSAppSyncClient = AWSAppSyncClient.builder()
            .context(getApplicationContext())
            .awsConfiguration(new AWSConfiguration(getApplicationContext()))
            .cognitoUserPoolsAuthProvider(new CognitoUserPoolsAuthProvider() {
                @Override
                public String getLatestAuthToken() {
                    try {
                        return AWSMobileClient.getInstance().getTokens().getIdToken().getTokenString();

                    } catch (Exception e) {
                        Log.e("APPSYNC_ERROR", e.getLocalizedMessage());
                        return e.getLocalizedMessage();
                    }
                }

            })
            .build();


    findUser();
    getItems();

Метод findUser ()

public void findUser() {

    username =  User.USERNAME;
    runQuery();
}

Метод runQuery ()

 public void runQuery() {

    ModelStringFilterInput modelStringFilterInput =  ModelStringFilterInput.builder().eq(username).build();
    ModelOrderFilterInput modelOrderFilterInput = ModelOrderFilterInput.builder().orderName(modelStringFilterInput).build();

    mAWSAppSyncClient.query(ListOrdersQuery.builder().filter(modelOrderFilterInput).build())
            .responseFetcher(AppSyncResponseFetchers.CACHE_AND_NETWORK)
            .enqueue(orderCallback);

}

И наконецметод GraphQLCall

private GraphQLCall.Callback<ListOrdersQuery.Data> orderCallback = new GraphQLCall.Callback<ListOrdersQuery.Data>() {
    @Override
    public void onResponse(@Nonnull Response<ListOrdersQuery.Data> response)
    {
        for (int i =0; i < response.data().listOrders().items().size(); i++) {

            response.data().listOrders().items().forEach(orderName ->{Log.d("list", orderName.toString());});

    }


    @Override
    public void onFailure(@Nonnull ApolloException e) {
        Log.d("eeeeerror", e.toString());
    }
};

У меня более 18 строк данных в одной таблице с несколькими столбцами, но только первая строка получена.

Что я делаю не так?

...