首页 > 解决方案 > 从 angularfire 数据库列表订阅返回值

问题描述

我试图在我的“费用”列表中总结每笔交易的“金额”价值。

这是我的数据库:

在此处输入图像描述

订阅中的日志有效,总计 1700,但我无法从函数中获取“this.expenseListTotal”的值以将其显示在另一个组件中。如何返回“this.expenseListTotal”值以便可以在另一个组件中使用它?

getExpenseListTotals(budgetId: string) {    
 this.afd.list('users/' + this.cUser.uid + '/budgets/' + budgetId + '/expenses').subscribe(_data => {       
   this.expenseListTotal = _data.reduce((sum, item) =>sum+item.amount,0);
  console.log("expennse list total = ",this.expenseListTotal, typeof this.expenseListTotal);
 });
}

标签: javascriptangularfirebasefirebase-realtime-database

解决方案


在役:

getExpenseListTotals(budgetId: string) {

return new Promise(resolve => {
  this.total = this.afd.list('users/' + this.cUser.uid + '/budgets/' + budgetId + '/expenses').subscribe((_data) => {


    this.expenseListTotal =  _data.reduce((sum, item) =>sum+item.amount,0);
    resolve(this.expenseListTotal);


  });

  })
}

在组件中:

this.total = this.budgetService.getExpenseListTotals(this.budgetId);
this.total.then(function(value){
 console.log(value)
});

推荐阅读