如何在Cloud Firestore中为将要更改的文档路径创建compopsite密钥

时间:2019-02-10 13:02:36

标签: dart flutter google-cloud-firestore

我有一个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子句的归档将根据使用该应用程序的个人而有所不同,这对每个人来说都是不同的,这意味着我每次创建该归档文件时都必须创建一个复合密钥,甚至可能不会知道这个领域。有办法解决这个问题吗?

1 个答案:

答案 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,是解决您的问题的方法。

另请参阅: