Open1
Firebase
Firebaseで自動生成する場合のuidやdocument idをJSON Schemaでvalidateする
- 自動生成されるIDの仕様は見つからなかった。どこかに記述がないか調査中。
- uidの生成コードは不明。
- document idはfirebase-js-sdkに自動生成するコードがあった。
- そもそも自動生成されるIDに仕様があったとしても変わる可能性がある(過去に変わったことがある。)ので、普通はvalidateしなくて良さそう。必要になるケースは限定的。(※諸事情で要るときは要る。)
- uidのエミュレータのソースコードを見れば分かりそうだけどJARファイルのソースコードが公開されているか不明。
- Firestoreのdocument idは、オフライン対応の都合でクライアント側でIDを生成しなければならないケースがあるので、これが見つかるのは想定していた。
- uidは無さそうな気がするが…To be continued.
{
"$defs": {
"firebase-auth-user-id": {
"type": "string",
"pattern": "^[0-9a-zA-Z]{28}$"
},
"firebase-firestore-document-id": {
"type": "string",
"pattern": "^[0-9a-zA-Z]{20}$"
},
}
References
Firebase User ID Allowed Characters - Stack Overflow
From my experience, the latest version of Firebase follows the
^[0-9a-zA-Z]{27}[0-9]$
pattern. I don't know why there's always a digit at the end, but that seems to be consistent. - Alix Axel,Oct 24 '17 at 11:38
Note: Recently I did get IDs that did NOT end with a digit. Also, the minus character is used in IDs - user3252141, May 23 '20 at 7:02
firebase-js-sdk/misc.ts at firebase@9.4.1 · firebase/firebase-js-sdk
(一部抜粋)
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; [...] const targetLength = 20; [...] debugAssert(autoId.length === targetLength, 'Invalid auto ID: ' + autoId);