我正在使用Firebase的Firestore,并且有两个单独的文档,我想加入。显然,Firestore不是关系数据库,但是看起来可以合并两个流。
因此,在此示例中,我有一个“联系人”文档,我想将其与“连接”文档一起加入。
SQL查询可能如下所示。
Select * FROM contacts, connections WHERE contacts.uid = connections.contactuid AND connections.uid = 1
基本上,这是我在flutter / dart中拥有的东西,但这不包含如何使用UID(唯一ID)加入流的逻辑:
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)结合在一起。因此,我希望的结果是仅显示与当前用户具有连接(先前已创建)的联系人。现实生活中的情况可能是用户已与某个联系人建立联系,而我现在希望显示当前用户已与之建立联系的所有联系人(用户)。