使用Promises转换ES搜索服务到Observables

时间:2017-07-11 14:22:29

标签: angularjs angular observable angular-promise elasticsearch-5

我正在试图弄清楚如何将使用promises(q库)的Elasticsearch的Angular 1.x搜索服务转换为使用Observables的Angular 4.x搜索服务?

OR

我也看过了促销,其中一个Observable转换为一个承诺,反之亦然。但是,我已经看到了一些使用Observables进行搜索和自动完成的简单示例,因此Observables似乎是在Angular 4中使用HTTP的首选方式。

这是我在Angular 1.x中用于自动完成的内容

this.getSuggestions = function(query) {
    var deferred = $q.defer();

    esClient.search({
      index: 'query-index',
      body: {
        "query": {
          "match_phrase_prefix": {
            "suggestions": {
              "query": query,
              "max_expansions": 10,
              "lenient": true
            }
          }
        },
        "size": 5,
        "from": 0,
        "_source": ["suggestions"]
      }
    }).then(function(es_return) {
      deferred.resolve(es_return);
    }, function(error) {
      deferred.reject(error);
    });

    return deferred.promise;
  };

我不确定从哪里开始如何将其转换为Observable?

1 个答案:

答案 0 :(得分:0)

我想说的是,不要重新发明轮子,只需使用内置的。

您可以使用此Angular的弹性搜索库:

https://github.com/byavv/angular2-elastic

或者在这个帖子中查看它如何适应新的Angular版本:

https://github.com/elastic/elasticsearch-js/issues/452#issuecomment-286738342

我会选择第一个选项,包括:

  • Angular2 elasticsearch
  • 自动填充示例

我相信这就是你要找的,对吧?