我有一个Cloud Firestore集合,它试图在这样的流构建器中引用:
stream:Firestore.instance.collection('htOne').document('path1')
.collection('path2').document('hats').collection('hat')
.where("${curntUser.isNotEmpty?curntUser:'me'}",isEqualTo: true).orderBy('timesent',descending: true).limit(1000).snapshots(),
where子句的归档将根据使用该应用程序的个人而有所不同,这对每个人来说都是不同的,这意味着我每次创建该归档文件时都必须创建一个复合密钥,甚至可能不会知道这个领域。有办法解决这个问题吗?
答案 0 :(得分:1)
您的文档中似乎有这种样式的字段:
"users": {
"uid1": true,
"uid3": true,
"uid4": true,
"me": true
}
这曾经是存储一组值(在您的情况下为UID)的推荐方法,但现在不再适用。实际上,正是由于您遇到的问题,Firestore现在支持使用数组存储此类值。在您的情况下,等效项为:
"users": ["uid1", "uid3", "uid4", "me"]
然后您可以在查询中使用array-contains
操作:
.where("users", "array-contains", "${curntUser.isNotEmpty?curntUser:'me'}")
此operator was added in version 0.8 of FlutterFire,是解决您的问题的方法。
另请参阅: