Angular js,调用函数从Angular FireStore中的数据获取字符串数组

时间:2019-01-07 16:11:12

标签: angular typescript

我是Angular的新手,正尝试使用以下函数从Firebase作为字符串数组获取详细信息:

Firestore:公司>详细信息>应用>名称:“ WM,TT,MP”

getCompanies(): string [] {
var appl: string []  = [] ;

this.db.database.ref("companies/details/app/").on('value', function (snap) {

  snap.val().name.split(",").forEach(function(x:string){
    appl.push(x);
    console.log(">>>first "+appl.length);
  });

  });

  console.log("Reached here ");
  console.log(">>>second "+appl.length);
  return appl;
}

当我从像

这样的init组件调用getCompanies时
 ngOnInit() {

    console.log(">>>"+this.localservice.getCompanies().length);


  }

它正在运行,没有任何错误,但是我得到以下输出,而我没有得到字符串[]。长度变成空白。

Reached here 
>>>second 0
>>>0
>>>first 1
>>>first 2
>>>first 3

问题是,第二步要比第一步先执行。结果,我将字符串[]设置为blank,如何以角度的方式获取此工作

1 个答案:

答案 0 :(得分:0)

您正在记录并返回外部回调函数appl,这就是为什么第二个在第一个之前获取日志的原因。

将日志记录并在回调函数内返回appl,如下所示:

getCompanies(): string [] {
var appl: string []  = [] ;

this.db.database.ref("companies/details/app/").on('value', function (snap) {

  snap.val().name.split(",").forEach(function(x:string){
    appl.push(x);
    console.log(">>>first "+appl.length);
  });
  
       console.log("Reached here ");
       console.log(">>>second "+appl.length);
       
 return appl;

 });