Need to configure your backend?See Build a Backend →
アプリケーションデータの読み取り
アイテムをクエリする
変更を実行できたので、作成されたインスタンスからidを取得し、それを使用してデータを取得します。
Future<Todo?> queryItem(Todo queriedTodo) async { try { final request = ModelQueries.get( Todo.classType, queriedTodo.modelIdentifier, ); final response = await Amplify.API.query(request: request).response; final todo = response.data; if (todo == null) { safePrint('errors: ${response.errors}'); } return todo; } on ApiException catch (e) { safePrint('Query failed: $e'); return null; }}アイテムをリストする
Amplify.API.queryでアイテムのリストを取得できます:
Future<List<Todo?>> queryListItems() async { try { final request = ModelQueries.list(Todo.classType); final response = await Amplify.API.query(request: request).response;
final todos = response.data?.items; if (todos == null) { safePrint('errors: ${response.errors}'); return const []; } return todos; } on ApiException catch (e) { safePrint('Query failed: $e'); return const []; }}後続ページのアイテムをリストする
大規模なデータセットの場合、結果をページネーションする必要があります。最初のページの結果を受け取った後、後続のページがあるかどうかを確認し、次のページを取得できます。
const limit = 100;
Future<List<Todo?>> queryPaginatedListItems() async { final firstRequest = ModelQueries.list<Todo>(Todo.classType, limit: limit); final firstResult = await Amplify.API.query(request: firstRequest).response; final firstPageData = firstResult.data;
// 100個以上のtodosがあることを示しており、次のセットのリクエストを取得できます。 if (firstPageData?.hasNextResult ?? false) { final secondRequest = firstPageData!.requestForNextResult; final secondResult = await Amplify.API.query(request: secondRequest!).response; return secondResult.data?.items ?? <Todo?>[]; } else { return firstPageData?.items ?? <Todo?>[]; }}クエリ述語
モデルはまた、比較のためのクエリ述語の使用をサポートしています。これらはモデルの属性からアクセスでき、たとえばBlog["attribute"]["operator"]です。
サポートされている演算子:
eq- 等しいne- 等しくないgt- より大きいge- 以上lt- より小さいle- 以下beginsWith- 指定されたフィールドが提供された値で始まるモデルに一致します。between- 指定されたフィールドが提供された開始値と終了値の間にあるモデルに一致します。contains- 指定されたフィールドが提供された値を含むモデルに一致します。
基本的な等号演算子
モデルの属性の等号性についてクエリします。
const blogTitle = 'Test Blog 1';final queryPredicate = Blog.NAME.eq(blogTitle);
final request = ModelQueries.list<Blog>( Blog.classType, where: queryPredicate,);final response = await Amplify.API.query(request: request).response;final blogFromResponse = response.data?.items.first;親IDでフェッチする
親IDですべてのPostを取得します
final blogId = blog.id;
final request = ModelQueries.list( Post.classType, where: Post.BLOG.eq(blogId),);final response = await Amplify.API.query(request: request).response;final data = response.data?.items ?? <Post?>[];より小さい
評価が5未満のPostを返します。
const rating = 5;
final request = ModelQueries.list( Post.classType, where: Post.RATING.lt(rating),);final response = await Amplify.API.query(request: request).response;
final data = response.data?.items ?? <Post?>[];