アプリケーションデータの作成、更新、削除
このガイドでは、Amplify ライブラリのデータクライアントを使用してデータの作成、更新、削除を行う方法を学びます。
開始する前に、以下が必要です:
項目の作成
バックエンドのデータスキーマを使用してデータクライアントを生成して、項目を作成できます。その後、項目を追加できます:
import { generateClient } from 'aws-amplify/data';import { type Schema } from '../amplify/data/resource'
const client = generateClient<Schema>();
const { errors, data: newTodo } = await client.models.Todo.create({ content: "My new todo", isDone: true,})項目の更新
項目を更新するには、update 関数を使用します:
import { generateClient } from 'aws-amplify/data';import { type Schema } from '../amplify/data/resource';
const client = generateClient<Schema>();
const todo = { id: 'some_id', content: 'Updated content',};
const { data: updatedTodo, errors } = await client.models.Todo.update(todo);項目の削除
削除ミューテーションを使用して Todo を削除できます。削除する項目を指定するには、その項目の id のみを指定する必要があります:
import { generateClient } from 'aws-amplify/data';import { type Schema } from '../amplify/data/resource'
const client = generateClient<Schema>();
const toBeDeletedTodo = { id: '123123213'}
const { data: deletedTodo, errors } = await client.models.Todo.delete(toBeDeletedTodo)トラブルシューティング認可されていないエラーのトラブルシューティング
各 API リクエストは認可モードを使用します。認可されていないエラーが発生した場合、認可モードを更新する必要があります。amplify/data/resource.ts ファイルで定義されたデフォルト認可モードをオーバーライドするには、リクエストまたはクライアントに authMode プロパティを渡します。次の例は、カスタム認可モードでデータを更新する方法を示しています:
import { generateClient } from 'aws-amplify/data';import { type Schema } from '../amplify/data/resource';
const client = generateClient<Schema>();
const { errors, data: newTodo } = await client.models.Todo.create( { content: 'My new todo', isDone: true, }, { authMode: 'apiKey', });作成、更新、削除のリクエストのキャンセル
.create(...)、.update(...)、または .delete(...) で返されるミューテーションリクエストプロミスで .cancel を呼び出して、任意のミューテーション API リクエストをキャンセルできます。
const promise = client.models.Todo.create({ content: 'New Todo' });// ^ 注:リクエストを待機していなく、プロミスを返しています
try { await promise;} catch (error) { console.log(error); // リクエストがキャンセルされたため、ここで確認できます。 if (client.isCancelError(error)) { console.log(error.message); // "my message for cancellation" // ユーザーキャンセルロジックを処理します }}
//...
// 上記のリクエストをキャンセルするにはclient.cancel(promise, 'my message for cancellation');.create()、.update()、.delete() から返されるプロミスが変更されていないことを確認する必要があります。通常、非同期関数は返されるプロミスを別のプロミスでラップします。例えば、以下は動作しません:
async function makeAPICall() { return client.models.Todo.create({ content: 'New Todo' });}const promise = makeAPICall();
// 以下はリクエストをキャンセルしません。client.cancel(promise, 'my error message');終了
おめでとうございます!アプリケーションデータの作成、更新、削除ガイドを完了しました。このガイドでは、アプリデータの作成、更新、削除を行いました。
次のステップ
次のステップとして推奨されるものは、API を使用してデータをクエリし、リアルタイムイベントをサブスクライブしてデータのミューテーションを監視することです。このために役立つリソースは以下のとおりです: