在我的firestore数据库中,我有一个名为rooms
的集合,其中我有多个文档,在每个文档中(一个文档是一个房间(,我有个字段是地图,它被称为users
,这是一个电子邮件的地图和一个显示名称:Expemple:
{
john.doe@exemple.com : "John Doe",
nemar@gmail.com : "Nemar",
}
等等。。。
我如何查询用户字段中包含以电子邮件命名的密钥的所有文件室文档,因为我知道每个密钥都可能不同,这取决于用户是否在文件室中?类似:
firestore.collection('rooms').where('users', arrayContains: "john.doe@exemple.com").snapshots()
我在流生成器中使用它。。。
我不想在挑选完所有文件后再把它们都拿到。。。
提前感谢!
映射不是数组,因此arrayContains
在这里不起作用(按设计(。
我认为你可以最容易地在这里的嵌套字段上使用一个不相等的条件:
firestore.collection('rooms').where('users.john.doe@exemple.com", notEqual: "").snapshots()
我仍然看到的主要问题是,电子邮件地址中的点也会被解释为嵌套字段的分隔符,所以你需要找到解决方案。我认为这其中的诀窍在于在基于多个字符串的查询中使用FieldPath
对象(so:new FieldPath("users", "john.doe@exemple.com")
(,但我自己还没有尝试过。