Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated Mar 26, 2026

アプリケーションデータの読み取り

アイテムをクエリする

変更を実行できたので、出力されたIDを使用してクエリを実行してデータを取得します。

private void getTodo(String id) {
Amplify.API.query(
ModelQuery.get(Todo.class, id),
response -> Log.i("MyAmplifyApp", ((Todo) response.getData()).getName()),
error -> Log.e("MyAmplifyApp", error.toString(), error)
);
}
private fun getTodo(id: String) {
Amplify.API.query(ModelQuery.get(Todo::class.java, id),
{ Log.i("MyAmplifyApp", "Query results = ${(it.data as Todo).name}") },
{ Log.e("MyAmplifyApp", "Query failed", it) }
);
}
suspend fun getTodo(id: String) {
try {
val response = Amplify.API.query(ModelQuery.get(Todo::class.java, id))
Log.i("MyAmplifyApp", response.data.name)
} catch (error: ApiException) {
Log.e("MyAmplifyApp", "Query failed", error)
}
}
private void getTodo(String id) {
RxAmplify.API.query(ModelQuery.get(Todo.class, id))
.subscribe(
response -> Log.i("MyAmplifyApp", ((Todo) response.getData()).getName()),
error -> Log.e("MyAmplifyApp", error.toString(), error)
);
}

アイテムをリストする

Amplify.API.queryで指定した条件に一致するアイテムのリストを取得できます:

Amplify.API.query(
ModelQuery.list(Todo.class, Todo.NAME.contains("first")),
response -> {
for (Todo todo : response.getData()) {
Log.i("MyAmplifyApp", todo.getName());
}
},
error -> Log.e("MyAmplifyApp", "Query failure", error)
);
Amplify.API.query(
ModelQuery.list(Todo::class.java, Todo.NAME.contains("first")),
{ response ->
response.data.forEach { todo ->
Log.i("MyAmplifyApp", todo.name)
}
},
{ Log.e("MyAmplifyApp", "Query failure", it) }
)
try {
Amplify.API
.query(ModelQuery.list(Todo::class.java, Todo.NAME.contains("first")))
.response.data
.items.forEach { todo -> Log.i("MyAmplifyApp", todo.name) }
} catch (error: ApiException) {
Log.e("MyAmplifyApp", "Query failure", error)
}
RxAmplify.API.query(ModelQuery.list(Todo.class, Todo.NAME.contains("first"))
.subscribe(
response -> {
for (Todo todo : response.getData()) {
Log.i("MyAmplifyApp", todo.getName());
}
},
error -> Log.e("MyAmplifyApp", "Query failure", error)
));

: このアプローチは最初の1,000アイテムまでしか返しません。この制限を変更するか、この制限を超える追加結果のリクエストを行うには、以下で説明されているページネーションを使用してください。

後続ページのアイテムをリストする

リストクエリはデフォルトで最初の1,000アイテムのみを返すため、大規模なデータセットの場合、結果をページネーションする必要があります。ページの結果を受け取った後、さらに結果が利用可能な場合は、次のページをリクエストするためのGraphQLRequestを取得できます。ページサイズも設定可能です。以下の例をご覧ください。

public void queryFirstPage() {
query(ModelQuery.list(Todo.class, ModelPagination.limit(1_000)));
}
private static void query(GraphQLRequest<PaginatedResult<Todo>> request) {
Amplify.API.query(
request,
response -> {
if (response.hasData()) {
for (Todo todo : response.getData()) {
Log.d("MyAmplifyApp", todo.getName());
}
if (response.getData().hasNextResult()) {
query(response.getData().getRequestForNextResult());
}
}
},
failure -> Log.e("MyAmplifyApp", "Query failed.", failure)
);
}
fun queryFirstPage() {
query(ModelQuery.list(Todo::class.java, ModelPagination.limit(1_000)))
}
fun query(request: GraphQLRequest<PaginatedResult<Todo>>) {
Amplify.API.query(request,
{ response ->
if (response.hasData()) {
response.data.items.forEach { todo ->
Log.d("MyAmplifyApp", todo.name)
}
if (response.data.hasNextResult()) {
query(response.data.requestForNextResult)
}
}
},
{ Log.e("MyAmplifyApp", "Query failed", it) }
)
}
suspend fun queryFirstPage() {
query(ModelQuery.list(Todo::class.java,
ModelPagination.firstPage().withLimit(1_000)))
}
suspend fun query(request: GraphQLRequest<PaginatedResult<Todo>>) {
try {
val response = Amplify.API.query(request)
response.data.items.forEach { todo ->
Log.d("MyAmplifyApp", todo.name)
}
if (response.data.hasNextResult()) {
query(response.data.requestForNextResult)
}
} catch (error: ApiException) {
Log.e("MyAmplifyApp", "Query failed.", error)
}
}
BehaviorSubject<GraphQLRequest<PaginatedResult<Todo>>> subject =
BehaviorSubject.createDefault(ModelQuery.list(Todo.class, ModelPagination.limit(1_000)));
subject.concatMap(request -> RxAmplify.API.query(request).toObservable())
.doOnNext(response -> {
if (response.hasErrors()) {
subject.onError(new Exception(String.format("Query failed: %s", response.getErrors())));
} else if (!response.hasData()) {
subject.onError(new Exception("Empty response from AppSync."));
} else if(response.getData().hasNextResult()) {
subject.onNext(response.getData().getRequestForNextResult());
} else {
subject.onComplete();
}
})
.concatMapIterable(GraphQLResponse::getData)
.subscribe(
todo -> Log.d(TAG, "Todo: " + todo),
error -> Log.e(TAG, "Error: " + error)
);