【发布时间】:2018-10-25 01:21:57
【问题描述】:
感谢阅读。
我在 Firestore 中有两个集合,我正在使用 Angularfire2。
我有一个“客户”集合和一个“工作”集合。客户端可以有多个作业,每个作业都有一个链接的客户端。
我创建了一个组件来显示所有个作业的列表,我正在尝试使用 Firestore 键为每个作业拉入关联的客户端。
这是我的数据:
我已经能够“破解”一个解决方案,但它非常有问题,而且它失去了所有异步功能 - 所以我不妨编写一个 MySQL 后端并忘记 Firestore - 使用 Firestore 的全部意义在于它是“实时的”。
public jobs = {};
[...]
processData() {
const clients = [];
this.clientCollection.ref.get().then((results) => {
results.forEach((doc) => {
clients[doc.id] = doc.data();
});
const jobs = {};
this.jobsCollection.ref.get().then((docSnaps) => {
docSnaps.forEach((doc) => {
jobs[doc.id] = doc.data();
jobs[doc.id].id = doc.id;
jobs[doc.id].clientData = clients[doc.data().client];
});
this.jobs = jobs;
});
});
}
这在一定程度上有效 - 但它消除了异步。
关键问题:有什么方法可以像在 SQL 数据库中那样进行“连接”以将这两个数据集拉到一起?有没有一种方法可以保持数据的异步性?
【问题讨论】:
-
您好,您有解决方案吗?我遇到了与您完全相同的问题,我尝试使用 Observable.combineLatest() 如下答案所述,但不是我想要的。
标签: javascript angular google-cloud-firestore angularfire2