我是第一次在 Flutter 中开发一个项目,并试图找到组织我的 Firestore 数据库的最佳方式。我相信我已经按照我想要的方式拥有它,但无法弄清楚如何正确查询它。
我有一个用户拥有一个集合的 ID,该集合将玩家个人资料与其用户个人资料相关联(在单独的集合中)。
我需要:
- 获取 Firebase 当前用户 uid
- 找到相关的玩家资料
- 获取保存到玩家资料中的事件 ID
- 基于 ID 的事件列表
我猜是按这个顺序。
DatabaseReference getCurrentUserRef() async {
return this.usersRef.child((await this.getCurrentUser()).uid);
}
var user = await getCurrentUserRef()
var _playerEvents = [];
db.collection('player').where('id', isEqualto: user).get().then((doc) => {
db.collection('player').doc(doc.data().id).collection('events').get().then((snapshot) => {
snapshot.forEach(doc) {
_playerEvents.push(doc.data().id);
}
});
});
然后使用该数组,我需要根据这些 id(如果有的话)获取所有事件
_playerEvents.forEach(event) {
db.collection('events').where('id', isEqualTo: event).get().then((doc) => {
//somehow popular a Map or JSON that I can show in a list view on the page for the events associated with that player
List_Item for display
});
}
这是我的数据库的一些屏幕。我正在学习使用 Dart 的 Flutter。任何帮助都会很棒。
最佳答案
我对 Flutter 不是很熟悉,所以我无法在代码上帮助您。
但为了插入您走上正确的道路:
Firestore 是异步的。因此,要完成上述所有 4 个步骤,您需要使用回调来完成它们。
我不认为你可以用那种方式级联查询(如果它类似于 Java,你不能那样做)。
您需要做的是在每次查询完成后引入回调,以便您有足够的信息来进行下一次查询。
关于firebase - FireStore Flutter 多步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53766918/