Машинопись - угловой пост http - PullRequest
0 голосов
/ 03 ноября 2018

Я создаю функцию автозаполнения.

1) Внутренняя служба RESTful возвращает следующий ответ для частично введенного ключевого слова.

JSON-ответ

{
    "suggest": {
    "resultsuggest": [
      {
        "text": "Ke",
        "offset": 0,
        "length": 2,
        "options": [
          {
            "text": "Kevin Johnson",
            "_index": "customernames",
            "_type": "_doc",
            "_id": "1",
            "_score": 3
          }]
      }
  ]
}
}

2) Что я должен сделать в приложении Angular, чтобы извлечь массив параметров из ответа JSON и вернуть его обратно для этой функции извлечения ?? Примечание. Я хочу использовать Promise вместо Observable.

fetch(params?: HttpParams): Promise<any> {
        const query = params.get('query');
        const headers = new HttpHeaders().set("Content-Type", "application/json");
        let postData = "{ \"_source\": \"suggest\", \"suggest\": {\"resultsuggest\" : { \"prefix\" : \""+query+"\",\"completion\" : {  \"field\" : \"suggest\",  \"size\" : 5 }}}}";
        return this._http.post<any[]>('http://127.0.0.1:9200/customernames/_search?pretty',postData, {headers})
        .pipe(map(result=> {
                 // what should I do to extract the Options array from the JSON response and return it back in this fetch function??

                 return ????;
           }),
            delay(400)
        ).toPromise();
    }

Ценю вашу помощь!

спасибо!

Обновлено: 1) Ответ JSON исправлен. 2) изменен возврат this._http.post<any> to return this._http.post<any[]>

1 Ответ

0 голосов
/ 03 ноября 2018

Как предположил Arcteezy, следующее сработало

map(result=> { return result.suggest.resultsuggest[0].options; }

...