アプリケーションデータの作成、更新、削除
このガイドでは、Amplifyライブラリの GraphQL クライアントを使用してデータを作成、更新、削除する方法について説明します。
開始する前に、以下が必要です:
ミューテーションを実行してアプリケーションデータを作成、更新、削除する
GraphQL では、ミューテーション (mutations) はデータを作成、更新、削除するために使用される API です。これはデータを読み取るが変更しないクエリとは異なります。以下の例は、Amplify GraphQL クライアントを使用してアイテムを作成、更新、削除する方法を示しています。
アイテムを作成する
API とミューテーションをインポートしてから、アイテムを追加することで、アイテムを作成できます:
import { generateClient } from 'aws-amplify/api';import * as mutations from './graphql/mutations';
const client = generateClient();
const todoDetails = { name: 'Todo 1', description: 'Learn AWS AppSync'};
const newTodo = await client.graphql({ query: mutations.createTodo, variables: { input: todoDetails }});作成されたアイテム Learn AWS AppSync が表示されるはずです。
アイテムを更新する
アイテムを更新するには、GraphQL の更新ミューテーションを使用します:
import { generateClient } from 'aws-amplify/api';import * as mutations from './graphql/mutations';
const client = generateClient();
const todoDetails = { id: 'some_id', // _version: 'current_version', // add the "_version" field if your AppSync API has conflict detection (required for DataStore) enabled description: 'Updated description'};
const updatedTodo = await client.graphql({ query: mutations.updateTodo, variables: { input: todoDetails }});アイテムを削除する
削除ミューテーションを使用して Todo を削除できます。削除するアイテムを指定するには、そのアイテムの id だけを提供する必要があります:
import { generateClient } from 'aws-amplify/api';import * as mutations from './graphql/mutations';
const client = generateClient();
const todoDetails = { id: 'some_id'};
const deletedTodo = await client.graphql({ query: mutations.deleteTodo, variables: { input: todoDetails }});詳細はこちらデータをミューテーションするためのカスタム認可モード
各 AWS AppSync API は、アプリを設定する際のデフォルト認可モードを使用します。権限のないエラーが表示される場合、認可モードを更新する必要があります。このデフォルトをオーバーライドするには、authMode プロパティを渡します。次の例は、カスタム認可モードを使用してデータをミューテーションする方法を示しています:
import { generateClient } from 'aws-amplify/api';import * as mutations from './graphql/mutations';
const client = generateClient();
const todo = await client.graphql({ query: mutations.createTodo, variables: { input: { id: 'some_id', name: 'My todo!', description: 'Hello world!' } }, authMode: 'iam'});ミューテーションリクエストをキャンセルする
client.graphql(...) から返される GraphQL リクエストプロミスで .cancel を呼び出すことで、任意の GraphQL API リクエストをキャンセルできます。
const promise = client.graphql({ query: "..." });
try { await promise;} catch (error) { console.log(error); // If the error is because the request was cancelled you can confirm here. if (client.isCancelError(error)) { console.log(error.message); // "my message for cancellation" // handle user cancellation logic }}
...
// To cancel the above requestclient.cancel(promise, "my message for cancellation");client.graphql() から返されたプロミスが変更されていないことを確認する必要があります。通常、非同期関数は返されるプロミスを別のプロミスにラップします。たとえば、以下は 機能しません:
async function makeAPICall() { return client.graphql({ query: '...' });}const promise = makeAPICall();
// The following will NOT cancel the request.client.cancel(promise, 'my error message');まとめ
おめでとうございます! アプリケーションデータの作成、更新、削除ガイドを完了しました。このガイドでは、GraphQL API を通じてアプリデータを作成、更新、削除しました。
次のステップ
推奨される次のステップには、API を使用してデータをクエリし、データの変更を確認するために実時間イベントにサブスクライブすることが含まれます。この作業に役立つリソースには以下が含まれます: