所以我有一个数据结构,如下所示。用户有一个月的集合,一个月有一个类别的集合,而类别有一个交易的集合。我很难从查询中获取所需的数据。我可以得到如下所示的月份,但是我很难弄清楚如何从月份文档中获取所有类别文档。
user
email
name
--months collection
month - name, amount
--categories collection
category - name, amount <-- I need all of these docs
--transactions
transaction - amount, date
在这里可以获取月份,但是现在我需要月份中的所有类别,因此可以在html中遍历它们。我认为我需要该月的ID,因此我可以提取该月的ID,但是据我了解,Observable没有ID。有没有简单的方法可以做到这一点,或者我需要重新考虑我的数据结构?
monthCollection: AngularFirestoreCollection<Month>;
monthName: string;
totalSpent: number;
categories: Observable<Category[]>;
constructor(public navCtrl: NavController,
public navParams: NavParams,
public alertCtrl: AlertController,
private firestoreProvider: FirestoreProvider) {
// Just need the data from the first month
this.firestoreProvider.getMonthObservable().forEach(doc => {
this.monthName = doc[0].name.substring(0, 3);
this.totalSpent = doc[0].totalSpent;
});
}
答案 0 :(得分:0)
除非您有一定的理由,否则Firestore会提供更好的(复合)查询功能。如果必须使用Realtime Database,则需要按照其文档Structure Your Database中提到的那样,对数据库体系结构进行展平。
数据结构的最佳做法
- 避免嵌套数据
- 扁平数据结构