【发布时间】: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
如何在这样的集合中创建集合:
firestore().collection('users').doc(user.uid).collection("account").doc('doc-account').set({...});
怎么做?
【问题讨论】:
标签: javascript typescript firebase google-cloud-firestore react-native-firebase
您的问题是关于如何在名为users 的根集合下创建一个名为account 的子集合。
您只需要完全按照您在问题中显示的方式进行操作,在doc-account DocumentReference 上使用set() 方法:只要在account 子集合下添加第一个文档,这个子集合会存在的。
如果在account子集合上使用add()方法,效果相同,如下:
firestore().collection('users').doc(user.uid).collection("account").add({...});
你甚至不需要有一个users 集合,即在users 集合中有一个文档。这最后一点,乍一看有点意外,我们用一个例子来解释一下:
在col1 集合下获取doc1 文档
col1/doc1/
另一个subDoc1在subCol1(子)集合下
col1/doc1/subCol1/subDoc1
实际上,从技术角度来看,这两个文件完全没有关联。他们只是分享他们的路径的一部分,没有别的。这就是为什么 subDoc1 文档(及其父 subCol1 集合)可以在没有 doc1 存在的情况下存在的原因。这样做的一个显着副作用是,如果您删除一个文档,它的子集合仍然存在。
【讨论】:
[Error: [firestore/permission-denied] The caller does not have permission to execute the specified operation.]。但是如果没有设置子集合,我的请求就可以了……我不明白为什么……