[第12回] データ操作

AWS Amplify

 

はじめに

 

皆さん。こんにちは! DreamHanksのエルムです。

今回はデータの操作方法について説明していきます。

前回の記事はデータストアの設定です。

 

作成・更新 (Create and update)

 

まず始めに、DataStore APIをインポートします:

 

DataStoreにデータを書き込むには、モデルのインスタンスをAmplify.DataStore.save()に渡します:

 

saveメソッドは、新しいレコードを作成しますが、ローカルストアにすでにレコードが存在する場合は、そのレコードを更新します。

 

DataStoreのモデルは不変です。レコードを更新するには、インスタンスを直接変異させるのではなく、copyOf関数を使用してアイテムのフィールドに更新を適用する必要があります。

 

削除 (Delete)

 

アイテムを削除するには、インスタンスを渡すだけです。

 

述語演算子を渡して、複数のアイテムを削除することもできます。

例えば、すべての下書き投稿を削除します:

 

さらに、モデルのインスタンスを渡すことで、例えば、投稿がドラフト状態の場合のみ削除するといった条件付きの削除を行うことができます。

 

また、あるモデルのすべてのアイテムを削除するには、Predicates.ALLを使うことができます。

 

クエリ データ(Query Data)

 

クエリはローカルストアに対して行われます。クラウド同期を有効にすると、ローカルストアはDataStore Sync Engineによってバックグラウンドで更新されます。

オブジェクトの任意のフィールド値にマッチさせるなど、より高度なフィルタリングを行う場合は、クエリ述語を指定することができます。

 

単一のアイテムを検索する場合

 

単一のアイテムを検索するには、クエリの第2引数にアイテムのIDを渡します。

 

プレディケート(Predicates)

プレディケートは、DataStore内のアイテムをマッチさせるために使用できるフィルターです。  query()に適用されると、返される結果を制約します。save()に適用されると、データを更新するための前提条件として機能します。

以下の述語を使って、スキーマ内のフィールドと照合することができます。

 

Strings: 

eq | ne | le | lt | ge | gt | contains | notContains | beginsWith | between

 

Numbers: eq | ne | le | lt | ge | gt | between

 

Lists: contains | notContains

 

例えば、評価が4以上のすべてのPost Modelのリストが欲しいとします。

greater than 4:

 

また、GraphQL Transformの条件文で定義されているような複数の条件を使用することもできます。例えば、評価が4以上で、公開されているすべての投稿を取得します。

greater than 4 and are PUBLISHED:

 

また、or論理演算子を使用することもできます。

もし、これをor文にしたい場合は、c => c.or(…)のように組み合わせた述語を囲みます。

 

ソート(整列)

Queryの結果は、1つまたは複数のフィールドでソートすることもできます。

例えば、すべてのPostオブジェクトをレーティングで昇順にソートする場合:

 

すべてのPostオブジェクトを、最初にレーティングで昇順に、次にタイトルで降順に並べ替える。

 

ページネーション

Queryの結果は、ページ番号(0から始まる)とオプションの制限値(デフォルトは100)を渡すことで、ページ分割することもできます。これにより、最初の100個のアイテムのリストが返されます。

 

終わりに

 

今回の記事は以上になります。

次回は[第13回] Amplify & GraphQLでのデータモデル設計を学びましょう。

ご覧いただきありがとうございます。

 

 

 

コメント