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

Choose your framework/language

Gen1 DocsLegacy

Page updated Jun 7, 2024

データモデル識別子のカスタマイズ

識別子はモデル定義の .identifier() メソッドを使用して定義されます。.identifier() メソッドの使用はオプションです。存在しない場合、モデルは ID 型の id というフィールドを自動的に持ち、手動で指定しない限り自動生成されます。

const schema = a.schema({
Todo: a.model({
content: a.string(),
completed: a.boolean(),
})
.authorization(allow => [allow.publicApiKey()]),
});
const client = generateClient<Schema>();
const todo = await client.models.Todo.create({ content: 'Buy Milk', completed: false });
console.log(`New Todo created: ${todo.id}`); // New Todo created: 5DB6B4CC-CD41-49F5-9844-57C0AB506B69

必要に応じて、Amplify Data を使用して単一フィールドと複合識別子を定義できます。

  • コンシューマー提供値を持つ単一フィールド識別子(型: id または stringrequired でマークされている必要があります)
  • コンシューマー提供値のセットを持つ複合識別子(型: id または stringrequired でマークされている必要があります)

単一フィールド識別子

デフォルトの id 識別子フィールドをカスタマイズする必要がある場合、別のフィールドの名前を渡すことで実行できます。

const schema = a.schema({
Todo: a.model({
todoId: a.id().required(),
content: a.string(),
completed: a.boolean(),
})
.identifier(['todoId'])
.authorization(allow => [allow.publicApiKey()]),
});
const client = generateClient<Schema>();
const { data: todo, errors } = await client.models.Todo.create({ todoId: 'MyUniqueTodoId', content: 'Buy Milk', completed: false });
console.log(`New Todo created: ${todo.todoId}`); // New Todo created: MyUniqueTodoId

複合識別子

複数のフィールドによってアイテムが一意に識別される場合、フィールド名の配列を identifier() 関数に渡すことができます。

const schema = a.schema({
StoreBranch: a.model({
geoId: a.id().required(),
name: a.string().required(),
country: a.string(),
state: a.string(),
city: a.string(),
zipCode: a.string(),
streetAddress: a.string(),
}).identifier(['geoId', 'name'])
.authorization(allow => [allow.publicApiKey()]),
});
const client = generateClient<Schema>();
const branch = await client.models.StoreBranch.get({ geoId: '123', name: 'Downtown' }); // All identifier fields are required when retrieving an item