启动我的应用后,使用以下代码为当前用户创建一个文档,并将其添加到我的用户集合中:
let userId = Auth.auth().currentUser?.uid
Firestore.firestore()
.collection("users").document(self.userId)
.collection("MyCollection").document("aDocument")
.setData(someData)
创建数据成功-here is what it looks like in the DB。 像 4GhpuyGRRhXEAYCllojaaJuwZq02 这样的文件都是由上面的代码创建的。和“丹佛”是在Firestore控制台中编辑集合时手动创建的。
现在我的问题是,当我以后想要检索在数据库中创建的所有用户时。 我愿意:
Firestore.firestore().collection("users").getDocuments { (snapshot) in
print(snapshot?.documents.count) // prints 1
}
这里返回的唯一文档是丹佛,这是在数据库中手动输入的文档。 不知道我在这里想念什么。 (错误的方法调用,验证安全性...?)
答案 0 :(得分:1)
您的代码实际上尚未使用用户的UID创建文档。您的代码已在一个名为MyCollection的UID下的子集合中创建了一个文档,并且文档ID为“ aDocument”。那是唯一创建的文档。您在控制台中看到的UID不是实际的文档。它们只是“幻像”占位符,可帮助您在其下组织子集合。这就是为什么它们以斜体显示的原因(与denver相反,denver实际上是具有实际字段的文档)。请注意,当您单击一个时,它没有任何字段-这是因为它实际上不是文档。
当您获取用户下的所有文档时,您将要获得的唯一实际文档是丹佛,这就是为什么计数为1的原因。其他所有内容实际上都不是文档,也不会对计数有所贡献。调用getDocuments时不会获取子集合中的文档。 Firestore中的查询很浅-他们不考虑子集合或它们下面的文档。