如何在 Firestore 中获取生成的文档 ID,然后将子集合添加到其中?

Posted

技术标签:

【中文标题】如何在 Firestore 中获取生成的文档 ID,然后将子集合添加到其中?【英文标题】:How to get a generated document's ID in the firestore then add subcollection into it? 【发布时间】:2020-01-12 20:26:17 【问题描述】:

我正在创建一个待办事项列表,我想让用户在列表中添加任务。但是,我在获取文档 ID 时遇到了麻烦。

这是我尝试过的两种方法:

 this.currentUser = firebase.auth().currentUser;
        const currentUserUid = this.currentUser.uid;
        let collectionPath = "/userProfile/" + currentUserUid  + "/list";

        this.list = firebase.firestore().collection(collectionPath).doc()
        const listId = this.list.id; 

        this.ref = firebase.firestore().collection(collectionPath)
                  .doc(listId).collection("task")

不幸的是,这种方式创建了一个新文档而不是将任务存储到列表中。

另一种方法是:

        this.currentUser = firebase.auth().currentUser;
        const currentUserUid = this.currentUser.uid;
        let collectionPath = "/userProfile/" + currentUserUid  + "/list";

        this.list = firebase.firestore().collection(collectionPath)
                   .get().then((snapshot) => 
                   snapshot.docs.forEach(doc => 
                       return doc.data();                    
                   )
                   )
        const listId = this.list.id; 

        this.ref = firebase.firestore().collection(collectionPath)
                  .doc(listId).collection("task")

但它说 listId 是未定义的。

这是我的火力基地结构:

User(Collection) - User1...
                     |
                   List(Collection) - List1...
                                        |
                             (Expected)Task(Collection) - task1...

艾米的建议?非常感谢!

【问题讨论】:

您需要知道要添加任务的文档的 ID。一旦你,将它传递给doc()this.list = firebase.firestore().collection(collectionPath).doc(id) 我在获取文档 ID 时遇到了困难。 @Andrewsuen 你试过我的建议了吗? 【参考方案1】:

为了获得文档的 ID,我建议您查看此answer。也可能this 可能会有所帮助。 至于向文档添加子集合,我建议您阅读此question 和以下documentation。

如果这些有帮助,请告诉我。

【讨论】:

以上是关于如何在 Firestore 中获取生成的文档 ID,然后将子集合添加到其中?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore - 如何在将文档添加到集合后获取文档 ID

我可以使用 Firestore 为使用 batch().set 创建的文档获取生成的 ID 吗?

Firebase Firestore:获取生成的文档 ID(Python)

如何在firestore中获取文档,其文档ID存储在列表中?,即只带那些文档....?

如何在firestore中为文档创建自定义自动生成的ID

在 Dart 的 Cloud Firestore 中添加文档后如何获取文档 ID