как создать составной ключ в облачном хранилище для пути к документу, который будет меняться - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть коллекция облачного пожарного хранилища, на которую я пытаюсь ссылаться в построителе потоков, например:

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 голосов
/ 10 февраля 2019

Похоже, что у вас есть этот стиль поля в ваших документах:

"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'}")

Этот оператор был добавлен в версии 0.8FlutterFire , и является решением ваших проблем.

См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...