Google cloud firestore 存在对象键的Firestore查询文档

Google cloud firestore 存在对象键的Firestore查询文档,google-cloud-firestore,Google Cloud Firestore,我正在编写一个跟踪事件的应用程序。我使用firestore创建了一个主要的事件集合,将每个事件作为文档存放。每个文档都有自己的详细信息(包括角色对象)和事件中自己的步骤集合 集合对象如下所示: events > [collection] eventid1 > [doc] steps > [collection] location: "Even Center", notes: "Some notes here",

我正在编写一个跟踪事件的应用程序。我使用firestore创建了一个主要的
事件集合
,将每个事件作为文档存放。每个文档都有自己的详细信息(包括
角色
对象)和事件中自己的步骤集合

集合对象如下所示:

events > [collection]
    eventid1 > [doc]
        steps > [collection]
        location: "Even Center",
        notes: "Some notes here",
        timestamp: 1272153600,
        title: "A great event",
        roles:
            userID1: 0, //numbers to define role type
            userID2: 1,
            userID3: 1,
我试图做的是查询存在
roles.userID1
的任何事件。我知道firestore没有子集合查询,所以这是我最接近解决这个问题的方法

只有3个“角色”(0=所有者,1=编辑器,2=查看器)。我尝试编写三个查询,并使用
.where(“roles.”+this.user.uid,“==”,0)
组合查询。这会起作用(尽管事后我遇到了一些数组问题),但我不希望每个查看此文件的用户都要打3个电话


我在某个地方看到一条随机评论,你可以使用查询
.where(“roles.”+this.user.uid,”,正如我上面的评论所述,我能够回答我自己的问题,因为我不小心让自己成功了

早些时候,我决定给我的角色一个数字值,而不是字符串值。0、1和2。现在我意识到,我可以通过使用
<3
有效地使用
.where
子句


我的查询现在包括
.where(“角色”)+this.user.uid,“哇……在反复阅读我的问题后,我意识到我使用数字作为角色进行了完美的设置。我正在使用查询
.where(“角色”)+this.user.uid,“我有相同的文档结构,我以相同的方式查询文档,与使用字符串角色略有不同:
.where(`users.${this.$currentUser.id},'>','')
,但我无法为
列表
操作制定安全规则,只能为
获取
操作制定安全规则。您能够编写安全规则吗?”?