我不是构建应用程序的专家,但是我需要通过另一个集合中另一个文档的ID查找一个集合的文档。
我需要填充一个其中包含另一个对象(RealEstate)的对象(租户)。
所以我要做的第一件事就是使用 snapshotChanges 和 map 来获取合同。 该合同具有一个ID作为属性,我想使用该ID向数据库进行新的查询以检索引用该ID的RealEstate,并使用该ID填充Contract.RealEstate的数据...
请参见上面的代码
public contracts: Observable<Contract[]>;
// I tried to use this property but it does not work...
public currentRealEstate: RealEstate = null;
...
this.contracts = this.afDb.collection<Contract>(
'Contract',
ref => ref.where('ownerId', '==', this.fb.user.uid).where("active", "==", true)
).snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data() as Contract;
const id = a.payload.doc.id;
data.id = id;
// This is where I'm doing wrong...
this.afDb.doc<RealEstate>('RealEstate/' + data.realEstateId).valueChanges().
subscribe((data) => {
// attr the RealEstate data to the property...
this.currentRealEstate = data;
console.log(this.currentRealEstate); // return is ok on the log...
});
// attr the property to the Contract.realEstate...
data.realEstate = this.currentRealEstate;
return { id, ...data };
}))
我该怎么办? 谢谢,如果我说错了,很抱歉。