2016-03-18 15 views
3

對於我構建的應用程序,我想使用由Firebase推送生成的ID作爲電子郵件地址本地部分。由於dash( - )不允許作爲第一個字符,我想用另一個字符替換它。Firebase推送Id:哪些字符可以在裏面?

雖然這必須是可逆的。因此,我想知道,Firebase推送ID由哪些字符組成? 到目前爲止,我所看到的:

  • 字母(az和AZ和0-9)
  • 下劃線(_)
  • 破折號( - )

樣品:-KD3rcGMuucRDjKOTK3O

  • ID中是否還有其他可能包含的字符?
  • Firebase ID始終以短劃線開頭嗎?
+0

你想要一個電子郵件地址[email protected]? – Jay

+0

是的。我只需要使用該本地部分在sb回覆該電子郵件地址時再次在Firebase中查找對象 – Makibo

+0

您可能需要考慮其他選項,因爲這聽起來像個不好的主意。也許有一個push()值作爲節點名稱,然後是電子郵件的孩子:[email protected]?或者,也可以使用push()值作爲key:value對中的查找參考。像KD3rcGMuucRDjKOTK3O:[email protected]? – Jay

回答

7

可能有很多更好的方法來產生比使用火力地堡的推動ID,然後重整他們唯一的電子郵件地址。也就是說,如果您想詳細瞭解Firebase如何生成推送ID,請閱讀以下博客文章:The 2^120 Ways to Ensure Unique Identifiers。這也解釋了爲什麼你不應該依賴push id來做不可估量的/安全的。

從這篇文章中可以看出,一個重要的事情是,推文id的前8個字符包含一個編碼的時間戳,這也是他們總是以相同字符開始的原因,如果您生成它們靠近彼此。

該帖子還包含鏈接到JavaScript code to generate a push id的要點。

的的字符集火力地堡的是選擇:

-ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz; 

正如你可以看到-只是在這個字典中的第一個字符,這是唯一的原因推IDS(目前)開始時都一個-。在將來的某個時刻,他們將從0開始,然後是1等。如果您在要點中使用了代碼,則可以計算每次翻車的時間。

最後:我曾經寫過一個關於如何從push ID取回時間戳的答案。這樣做不被推薦,但它可以是一個有趣的實驗:Can you get the timestamp from a Firebase array key?

+0

以及我認爲我可以省去麻煩來生成我自己的唯一ID(以及由此產生的任何複雜性),並重新使用Firebase ID。但是謝謝你的要點 - 錯過了。所以我至少可以確定該字典 – Makibo

+0

如果我的回答很有用,請點擊左側的upvote按鈕。如果它回答了您的問題,請點擊複選標記以接受它。這樣別人就知道你已經(充分)幫助了。 –

+0

已經upvoted,但現在接受 – Makibo

相關問題