gpt4 book ai didi

AngularFire - 将两个具有相同 pushId 项目的 FireStore 集合组合起来

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:30 25 4
gpt4 key购买 nike

我正在使用 AngularFire + FireStore 进行一些项目。

我的 Firestore 模型如下所示:

  • 集合 1

    • key1 {一些数据}
    • key2 {一些数据}
  • 集合 2

    • key1 {其他数据}
    • key2 {其他数据}

现在我需要显示列表,其中我有一些来自第一个集合的数据,还有一些来自另一个集合的数据。如何创建这样的列表?

制作两个observable然后合并它似乎毫无意义。

const collection = this.afStore.collection<any>(collectionName);
return collection.snapshotChanges()
.map(participants => {
return participants.map(participant => {
const data = participant.payload.doc.data();
const id = participant.payload.doc.id;
return {id, ...data};
});
});

我有这段代码需要数据 + id,现在我需要使用这个 id 从另一个集合中提取数据,但不知道如何。

最佳答案

这是我的做法...

“projects”数据有customer_doc_id、customer_builder_doc_id、customer_contractor_doc_id,是Firestore中其他数据集合的doc_id。 mergeMap 命令适用于 rxjs^5.5.0。

 private getProjectsCombineObservables(): Observable<any[]> {
this.projectsCollection = this.afs.collection<Project>('projects', ref =>
ref.orderBy('job_number', 'desc'));
return this.projectsCollection.snapshotChanges()
.map(actions => {
return actions.map(a => {
const project_data = a.payload.doc.data() as Project;
const doc_id = a.payload.doc.id;

let observable1 = this.getCustomer(project_data.customer_doc_id);
let observable2 = this.getBuilder(project_data.customer_builder_doc_id);
let observable3 = this.getContractor(project_data.customer_contractor_doc_id);

const combinedData = Observable.combineLatest(observable1, observable2, observable3, (data1, data2, data3) => {
return { ...data1, ...data2, ...data3 };
});

return combinedData.map(data => Object.assign({}, { doc_id, ...project_data, ...data }));
});
}).mergeMap(observables => Observable.combineLatest(observables));

关于AngularFire - 将两个具有相同 pushId 项目的 FireStore 集合组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47577689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com