Ionic 如何从firebase中检索贷款信息(贷款文档字段)和特定贷款中的项目(贷款文档的项目集合)?

fslejnso  于 2023-08-01  发布在  Ionic
关注(0)|答案(2)|浏览(115)

我试图通过它的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;
      });
    });
  }

cl25kdpy

cl25kdpy1#

getLoanById()更改为以下方法:

async getLoanById(id: string) : Promise<any> {
    const doc = await firebase.firestore().collection('loans').doc(id).get();
    let loan = new Loan(doc.data().username, doc.data().status, doc.data().duedate.toDate(), doc.id);
    const collection = await firebase.firestore().collection('loans/' + id + '/items').get();
    loan.items = []; // Empty array
    collection.forEach(doc_1 => {
      let item = new Item(doc_1.id, doc_1.data().quantity);
      loan.items.push(item);
    });
    return loan;
  }

字符串
由于get()方法是异步的,因此使用async/await等待数据被检索到,然后将其添加到列表中。然后在DetailPage中,您可以执行以下操作:

constructor(private route: ActivatedRoute, private loanService: LoanService) {
    this.loanId = this.route.snapshot.params.id;
    this.loanService.getLoanById(this.loanId).then((result){
      console.log(result);
     });
  }


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

8yparm6h

8yparm6h2#

要从Firebase访问贷款和项目数据,应使用Firestore数据库。Firestore是Firebase提供的NoSQL数据库,它支持灵活的基于文档的存储。下面是一个简单的分步指南,介绍如何实现这一目标:**在您的项目中建立Firebase:**如果您还没有这样做,请尽快使用Firebase针对不同平台(Web、Android和iOS)的官方文档创建Firebase并将其集成到您的应用程序中。**设计Firestore数据结构:**接下来,决定Firestore数据的结构。在这种情况下,考虑有一个名为“loans”的集合,其中每个文档表示一个单独的贷款,其中字段表示关于该贷款的信息,以及每个贷款文档中的一个名为“items”的附加子集合,该子集合包含关于与该贷款相关联的项目的详细信息。**新增贷款单据:**为了存储贷款信息,在“loans”集合中创建一个单据。每个文档都有自己的唯一标识符,允许您稍后检索贷款数据。

相关问题