2017-10-20 103 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。

相关问题