ドキュメントID
ドキュメントIDはドキュメントの一意な識別子で、サーバーによって自動生成される場合も、ユーザーが手動で指定する場合もあります。
Squidのビルトインデータベースは2種類のドキュメントIDをサポートします。一方、database connectorsでは、ドキュメントIDとしてオブジェクトが必要です。
Built-in database
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 });
- 複合主キー。これはオブジェクトの形を取ります。ユーザーがコンソールでコレクションのスキーマを変更し、主キーを複合にした場合、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を複合主キーとして要求しない場合、IDはSquidによって自動生成されます。以下の例では、IDが自動的に生成されます。
Client code
const collectionRef = squid.collection('users');
await collectionRef.doc().insert({ name: 'John Doe', age: 30 });
External database connectors
ビルトイン以外のconnectorでは、主キーが複合でない場合でも、ドキュメントIDはオブジェクト形式である必要があります。これにより、異なるintegration間で一貫性が保たれ、SquidにおけるドキュメントIDの取り扱いが簡素化されます。
以下は、database connectorでカスタム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の仕組みを理解することで、ドキュメントをより効果的かつ効率的に作成・管理できます。