Firestore объединяет потоки, такие как таблица отношений - PullRequest
0 голосов
/ 29 января 2019

Я использую Firebase's Firestore и у меня есть два отдельных документа, к которым я хотел бы присоединиться.Очевидно, Firestore не является реляционной базой данных, однако похоже, что возможно объединить два потока.

Итак, для этого примера у меня есть документ «контакты», к которому я хотел бы присоединиться к документу «подключения».

Запрос SQL может выглядеть следующим образом.

Select * FROM contacts, connections WHERE contacts.uid = connections.contactuid AND connections.uid = 1

Вот в основном то, что у меня есть в флаттере / дротике, но в нем нет логики, как объединять потоки с UID (уникальным идентификатором):

static Stream stream1 = Firestore.instance.collection('contacts').snapshots();
static Stream stream2 = Firestore.instance.collection('connections').snapshots();
StreamZip myContactStream = StreamZip([stream1, stream2]);

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
        stream: myContactStream,
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
          if (!snapshot.hasData) return CircularProgressIndicator();
          return FirestoreListView(documents: snapshot.data.documents);
        },
      ),
    );
  }

Чтобы пояснить этот код неработать, но дает представление о структуре, с которой я работаю.Причина, по которой он не работает, так как он не объединяет уникальную переменную (UID).Поэтому результат, на который я надеюсь, состоит в том, чтобы показывать только контакты, которые имеют соединение (ранее созданное) для текущего пользователя.Реальный сценарий может быть связан с тем, что пользователь подключился к контакту, и теперь я надеюсь показать все контакты (пользователей), с которыми подключен текущий пользователь.

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