ドキュメントID
ドキュメントIDは、サーバーによって自動生成されるか、ユーザーが手動で指定できるドキュメントの一意な識別子です。
Squidの built-in database は2種類のドキュメントIDをサポートしていますが、database connectors ではドキュメントIDとしてオブジェクトが必要です。
組み込みデータベース
Squidの built-in database では、ドキュメントIDは以下の2種類のタイプのいずれかになります:
-
コレクション内で一意となる文字列。文字列は、多くのドキュメントの中から特定のドキュメントを識別する効果的な方法です。多くの場合、開発者は文字列IDをランダム生成された UUIDs に設定します。また、ユーザー自身で一意の文字列を提供することもできます:
Client codeconst 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 codeconst collectionRef = squid.collection('employees');
const docRef = collectionRef.doc({ employeeName: 'Jane Doe', deptId: '12345' });
await docRef.update({ age: 31 });
自動ID生成
ユーザーがIDを指定せず、スキーマがIDを複合主キーにすることを要求していない場合、Squid によってIDが自動生成されます。以下の例では、IDは自動生成されます:
const collectionRef = squid.collection('users');
await collectionRef.doc().insert({ name: 'John Doe', age: 30 });
外部データベースコネクタ
組み込みでないコネクタの場合、主キーが複合でなくても、ドキュメントIDはオブジェクト形式でなければなりません。これにより、異なる統合間での一貫性が保たれ、Squid におけるドキュメントIDの取り扱いが簡素化されます。
以下は、database connectorでカスタムIDを持つドキュメントを作成する例です:
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の仕組みを理解することで、ドキュメントの作成および管理がより効果的かつ効率的に行えるようになります。