【问题标题】:Firebase Firestore: create collection in collectionFirebase Firestore:在集合中创建集合
【发布时间】:2021-11-14 07:19:49
【问题描述】:

如何在这样的集合中创建集合:

    firestore().collection('users').doc(user.uid).collection("account").doc('doc-account').set({...});

怎么做?

【问题讨论】:

    标签: javascript typescript firebase google-cloud-firestore react-native-firebase


    【解决方案1】:

    您的问题是关于如何在名为users 的根集合下创建一个名为account子集合

    您只需要完全按照您在问题中显示的方式进行操作,在doc-account DocumentReference 上使用set() 方法:只要在account 子集合下添加第一个文档,这个子集合会存在的。

    如果在account子集合上使用add()方法,效果相同,如下:

    firestore().collection('users').doc(user.uid).collection("account").add({...});
    

    你甚至不需要有一个users 集合,即在users 集合中有一个文档。这最后一点,乍一看有点意外,我们用一个例子来解释一下:

    col1 集合下获取doc1 文档

    col1/doc1/
    

    另一个subDoc1subCol1(子)集合下

    col1/doc1/subCol1/subDoc1
    

    实际上,从技术角度来看,这两个文件完全没有关联。他们只是分享他们的路径的一部分,没有别的。这就是为什么 subDoc1 文档(及其父 subCol1 集合)可以在没有 doc1 存在的情况下存在的原因。这样做的一个显着副作用是,如果您删除一个文档,它的子集合仍然存在。

    【讨论】:

    • 我试过这个。但是当我尝试设置子集合时,我有这个错误[Error: [firestore/permission-denied] The caller does not have permission to execute the specified operation.]。但是如果没有设置子集合,我的请求就可以了……我不明白为什么……
    • 这是因为您的 Firestore 安全规则不允许在子集合中创建文档。您应该查看规则并允许此操作。如果适配不起作用,您可以使用您的安全规则更新您的问题,我会对其进行审核。
    猜你喜欢
    • 2020-04-07
    • 2018-06-03
    • 2020-08-19
    • 2021-05-06
    • 2020-12-14
    • 2021-02-20
    • 2020-04-23
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多