使用flatMap或地图在Angular中嵌套HTTP获取请求

时间:2019-01-22 17:46:12

标签: angular get angular-httpclient

我想在Angular中执行以下步骤:

  1. 获取数据库列表并将其放入可观察的数组
  2. 遍历可观察对象,并为每个元素发出另一个http get请求(检查是否存在特定表)
  3. 使用随后的值,我可以根据第二个get请求的结果将数组分为几个数组

有关信息,这是我通过访问URL(JSON)获得的数据:

[{"name":"facturation_test"},{"name":"facturation_test2"},{"name":"postgres"},{"name":"source_cadiere"},{"name":"source_dangu"},{"name":"template0"},{"name":"template1"},{"name":"template_urbanisme_7_12"},{"name":"template_urbanisme_7_13"},{"name":"test"},{"name":"urbanisme_asvjl"},{"name":"urbanisme_cadiere"}]

这是到目前为止,我从代码中得到的内容:

我的服务方法(database-service.ts)

getDatabases():Observable<IDatabase[]>{


    return this.http.get<IDatabase[]>('http://localhost:3000/databases');

}

database.component.ts

//My variable stocking the info (type interface:IDatabase[])
public databases:IDatabase[];

导入服务后,在我的onInit方法内

this._datebaseServiceService.getDatabases()
  .subscribe(
    data=>{
      this.databases= data;
      console.log(this.databases);
    });

在第二个服务表-countService.ts中

getTableCount(databasename, tableName):Observable<ICount[]>{

    return this.http.get<ICount[]>('http://localhost:3000/check-table? 
database='+databasename+'&tablename='+tableName);

  } 

我已经尝试了.flatMap.map的几种方法,但是我无法正确理解语法。我也尝试简单地遍历this.database变量,但是如果这样做,我将嵌套订阅,因为我不知道如何调用它。即使经过几次讲解这两个命令的讲座,我仍然对flatMap遇到一些问题。

到目前为止,我已经了解了以下内容:

  • .map =>遍历了可观察对象的每个元素,并且(我认为)是我在这里需要的

  • .flatMap =>似乎用于嵌套请求,但是我不知道它如何遍历每个元素?

我显然缺少一些东西,因为检索数据本身(表列表)不是问题。

0 个答案:

没有答案