ドキュメントID
ドキュメントIDは、文書を一意に識別するための識別子であり、サーバーによって自動生成される場合とユーザーが手動で指定する場合があります。
Squidのbuilt-in databaseは、2種類のドキュメントIDをサポートしており、一方でdatabase connectorsは、ドキュメントIDとしてオブジェクトを必要とします。
組み込みデータベース
Squidの組み込みデータベースでは、ドキュメントIDには次の2つのタイプがあります:
- コレクション内で一意となる文字列。文字列は、複数の文書の中から1つの文書を識別する効果的な方法です。多くの場合、開発者は文字列IDをランダム生成されたUUIDsに設定します。独自のユニークな文字列を指定することも可能です:
Client code
const collectionRef = squid.collection('users');
const docRef = collectionRef.doc('my_custom_id');
await docRef.insert({ name: 'John Doe', age: 30 });
- 複合主キー(composite primary keys)の形式。コンソールでユーザーがコレクションのスキーマを変更し、主キーを複合に設定した場合、IDは例えば
{employeeName: string, deptId: string}のようなオブジェクト形式でなければなりません。これにより、複数のフィールドをドキュメントIDとして指定することができます。例えば、部門12345のJane Doeさんが誕生日を迎えた際、彼女の年齢を以下のように更新することができます:
Client code
const collectionRef = squid.collection('employees');
const docRef = collectionRef.doc({ employeeName: 'Jane Doe', deptId: '12345' });
await docRef.update({ age: 31 });
自動ID生成
ユーザーがIDを指定せず、かつスキーマがIDを複合主キーとして要求していない場合、SquidはIDを自動生成します。以下の例では、IDが自動生成されています:
Client code
const collectionRef = squid.collection('users');
await collectionRef.doc().insert({ name: 'John Doe', age: 30 });
外部データベースコネクタ
組み込み以外のコネクタの場合、主キーが複合でなくてもドキュメントIDはオブジェクト形式で指定する必要があります。これにより、異なる統合間での一貫性が保たれ、SquidでのドキュメントIDの取り扱いが簡素化されます。
以下は、データベースコネクタでカスタムIDを用いてドキュメントを作成する例です:
Client code
const collectionRef = squid.collection('users', 'CONNECTOR_ID');
const docRef = collectionRef.doc({ id: 'my_custom_id' });
await docRef.insert({ name: 'John Doe', age: 30 });
SquidにおけるドキュメントIDの仕組みを理解することで、より効果的かつ効率的にドキュメントを作成・管理することが可能になります。