Firebase 枚举浅层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上的查询中

我有一个firestore数据库,其中包含文档
/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?