Firestore를 사용하여 Flutter에 채팅 앱이 있고 두 가지 주요 컬렉션이 있습니다.
chats
어느은 자동 ID를 키가와 가지고있다message
,timestamp
그리고uid
필드.users
에 키uid
가 있으며name
필드가 있습니다.
내 응용 프로그램 messages
에서이 위젯과 함께 (컬렉션의) 메시지 목록을 표시합니다 .
class ChatList extends StatelessWidget {
@override
Widget build(BuildContext context) {
var messagesSnapshot = Firestore.instance.collection("chat").orderBy("timestamp", descending: true).snapshots();
var streamBuilder = StreamBuilder<QuerySnapshot>(
stream: messagesSnapshot,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> querySnapshot) {
if (querySnapshot.hasError)
return new Text('Error: ${querySnapshot.error}');
switch (querySnapshot.connectionState) {
case ConnectionState.waiting: return new Text("Loading...");
default:
return new ListView(
children: querySnapshot.data.documents.map((DocumentSnapshot doc) {
return new ListTile(
title: new Text(doc['message']),
subtitle: new Text(DateTime.fromMillisecondsSinceEpoch(doc['timestamp']).toString()),
);
}).toList()
);
}
}
);
return streamBuilder;
}
}
그러나 이제 users
각 메시지 의 사용자 이름 ( 컬렉션에서) 을 표시하고 싶습니다 .
Flutter에 특정 이름이 있는지 확실하지 않지만 일반적으로 클라이언트 측 조인이라고합니다.
이 작업을 수행하는 한 가지 방법을 찾았지만 (아래에 게시했습니다) Flutter에서 이러한 유형의 작업을 수행하는 또 다른 / 더 나은 / 관용적 인 방법이 있는지 궁금합니다.
위의 구조에서 각 메시지의 사용자 이름을 조회하는 Flutter의 관용적 방법은 무엇입니까?