我正在试图弄清楚如何将使用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?
答案 0 :(得分:0)
我想说的是,不要重新发明轮子,只需使用内置的。
您可以使用此Angular的弹性搜索库:
https://github.com/byavv/angular2-elastic
或者在这个帖子中查看它如何适应新的Angular版本:
https://github.com/elastic/elasticsearch-js/issues/452#issuecomment-286738342
我会选择第一个选项,包括:
我相信这就是你要找的,对吧?