我试图通过它的ID和项目的详细信息,在该贷款显示在详细页面的具体贷款的信息。但是,我无法也不知道如何使用贷款服务的getLoanById方法检索贷款和贷款项。
- detail.page.ts*
export class DetailPage {
loan: Loan;
loanId: string;
constructor(private route: ActivatedRoute, private loanService: LoanService) {
this.loanId = this.route.snapshot.params.id;
this.loan = this.loanService.getLoanById(this.loanId);
}
}
字符串
- loan.service.ts*
getLoanById(id: string) {
return firebase.firestore().collection('loans').doc(id).get().then(doc => {
let loan = new Loan(doc.data().username, doc.data().status, doc.data().duedate.toDate(), doc.id);
return firebase.firestore().collection('loans/' + id + '/items').get().then(collection => {
loan.items = []; // Empty array
collection.forEach(doc => {
let item = new Item(doc.id, doc.data().quantity);
loan.items.push(item);
})
return loan;
});
});
}
型
2条答案
按热度按时间cl25kdpy1#
将
getLoanById()
更改为以下方法:字符串
由于
get()
方法是异步的,因此使用async/await
等待数据被检索到,然后将其添加到列表中。然后在DetailPage
中,您可以执行以下操作:型
then()方法返回一个
Promise
。它最多需要两个参数:Promise
成功和失败情况的回调函数。一旦Promise被实现或拒绝,相应的处理函数(onFulfilled或onRejected)将被异步调用。检查:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function的
8yparm6h2#
要从Firebase访问贷款和项目数据,应使用Firestore数据库。Firestore是Firebase提供的NoSQL数据库,它支持灵活的基于文档的存储。下面是一个简单的分步指南,介绍如何实现这一目标:**在您的项目中建立Firebase:**如果您还没有这样做,请尽快使用Firebase针对不同平台(Web、Android和iOS)的官方文档创建Firebase并将其集成到您的应用程序中。**设计Firestore数据结构:**接下来,决定Firestore数据的结构。在这种情况下,考虑有一个名为“loans”的集合,其中每个文档表示一个单独的贷款,其中字段表示关于该贷款的信息,以及每个贷款文档中的一个名为“items”的附加子集合,该子集合包含关于与该贷款相关联的项目的详细信息。**新增贷款单据:**为了存储贷款信息,在“loans”集合中创建一个单据。每个文档都有自己的唯一标识符,允许您稍后检索贷款数据。