2017-10-20 60 views
8

我知道,在Realtime Database我能得到push ID有人這樣加入之前:Firestore - 在添加之前是否有可能獲得ID?

DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference(); 
     String challengeId=databaseReference.push().getKey(); 

,比我可以用這個ID將其添加。

我能得到它也在Cloud Firestore?

回答

18

這是包括在documentation。請參閱添加文檔部分的最後一段。

DocumentReference ref = db.collection("my_collection").document(); 
String myId = ref.getId(); 
+0

在添加之前獲取生成的ID是否有可能在添加之後覆蓋其他數據? (因爲這個ID是在...之前生成的) –

+0

對我來說也是一樣......在firestore中'.document()'不會給與push()'做同樣的與數據庫通信的印象。我相信普遍的觀點是,身份證碰撞的可能性很低,我們不必關心它。 – 34m0

+0

我想這是另一個問題... –

4

projectsRef是公司的FireStore採集參考。

數據是您想上傳到firestore的鍵值的對象。

AFS是angularfirestore模塊構造注入

您可以在下面的方式做到這一點(代碼是AngularFire2 V5,它類似於火力SDK的任何其他版本說網絡,節點等)

const pushkey = this.afs.createId(); 
const project = {' pushKey': pushkey, ...data }; 
this.projectsRef.doc(pushkey).set(project); 

這將產生在收集新的文件名爲projectsRef其在pushKey ID和文件將有pushKey屬性相同的文件ID

記住,S et也將刪除任何現有數據

其實.add()和.doc().set()與.add()相同,id是自動生成的, 與.doc().set()可以提供自定義ID。

相關問題