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

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

アイテムをクエリする

変更を実行できたので、作成されたインスタンスから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?>[];