Firebase 枚举浅层Firestore集合中的伪文档
我有一个firestore数据库,其中包含文档Firebase 枚举浅层Firestore集合中的伪文档,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我有一个firestore数据库,其中包含文档/users/{userId}/public/doc,但伪文档users/{userId}实际上没有自己的字段。在基于web的firebase控制台中,这些伪文档会列出,但会以斜体显示为灰色,这可能表示它们丢失了 但是,我无法通过Python的firebase_admin或firebase CLI工具以编程方式列出这些伪文档 那么,如何才能真正列出浅集合中的项目呢?由于在/users/{userId}上没有文档,所以它不会出现在/users上的查询中
/users/{userId}/public/doc
,但伪文档users/{userId}
实际上没有自己的字段。在基于web的firebase控制台中,这些伪文档会列出,但会以斜体显示为灰色,这可能表示它们丢失了
但是,我无法通过Python的firebase_admin
或firebase CLI工具以编程方式列出这些伪文档
那么,如何才能真正列出浅集合中的项目呢?由于在
/users/{userId}
上没有文档,所以它不会出现在/users
上的查询中。Firestore控制台仅显示用户ID
,以便显示您在其下的子集合
客户端代码找到
userId
路径的唯一方法是查询子集合,然后从该DocumentSnapshot
备份遍历路径。不过,这是一个相当麻烦的解决方法,因此如果您的用例依赖于以后能够从/users
中读取它们,我建议始终创建用户ID
文档。由于/users/{userId}
中没有文档,因此它不会出现在/users
的查询中。Firestore控制台仅显示用户ID
,以便显示您在其下的子集合
客户端代码找到
userId
路径的唯一方法是查询子集合,然后从该DocumentSnapshot
备份遍历路径。不过,这是一个相当麻烦的解决方法,因此我建议始终创建userId
文档如果您的用例依赖于以后能够从/users
读取它们。请记住,Firebase控制台不一定必须使用公共javascript客户端SDK提供的操作来填充其屏幕。例如,它可以调用使用nodejs(或等效)SDK的后端,该SDK提供了一个API,该API:
检索此集合中的文档列表
返回的文档引用可能包括对“缺少”的引用
文档”,即没有文档但
包含文档的子集合。
因此,假设您有一个可以使用此API的后端,您当然可以在应用程序中自由地执行相同的操作。请记住,Firebase控制台不必使用公共javascript客户端SDK提供的操作来填充其屏幕。例如,它可以调用使用nodejs(或等效)SDK的后端,该SDK提供了一个API,该API: 检索此集合中的文档列表 返回的文档引用可能包括对“缺少”的引用 文档”,即没有文档但 包含文档的子集合。
因此,您当然可以在应用程序中自由地执行相同的操作,假设您有一个可以使用此API的后端。As/public已经是一个子集合,并且在文档{userid}中您没有数据,这是因为集合“user”不存在,为了理解这种行为,我推荐本文@Tomaszvizant,是的,我明白了。但我不想删除用户,我想列出他们。由于网站可以以某种方式做到这一点,因此在理论上它必须是可行的……因为/public已经是一个子集合,并且在文档{userid}中您没有数据,因为集合“user”不存在,为了理解这种行为,我推荐本文@Tomaszvizant,是的,我明白了。但我不想删除用户,我想列出他们。既然网站能以某种方式做到这一点,那么它在理论上一定是可行的……道格,我只是想澄清一下,你是说Node.js SDK的listDocuments()显示了这些缺失的节点,而Python的firebase_admin可能没有?我不知道,你看到类似的API了吗?道格,我只是想澄清一下,你是说Node.js SDK的listDocuments()吗显示了缺少的节点,而Python的firebase_管理员可能没有?我不知道,您是否看到提供的类似API?