Вложенный http получить запрос в Angular с flatMap или картой - PullRequest
0 голосов
/ 22 января 2019

Я хочу произвести следующие шаги в Angular:

  1. Получить список баз данных и поместить его в наблюдаемый массив
  2. Проходить через наблюдаемые и для каждого элемента сделать еще одинhttp get request (проверьте, существует ли определенная таблица)
  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"}]

Вот что я получаю из своего кода до этого момента:

Мой метод обслуживания (база данных-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 =>, кажется, используется для вложенного запроса, но я не понимаю, как он идетпо каждому элементу?

Я явно что-то упускаю, поскольку получение самих данных (списка таблиц) не было проблемой.

...