gpt4 book ai didi

javascript - 在 JavaScript Promise 中放置 http get 调用的位置

转载 作者:行者123 更新时间:2023-11-28 06:45:22 25 4
gpt4 key购买 nike

我正在使用 Elasticsearch 和 AngularJS 构建一个小型搜索应用程序。我正在尝试使用 Angular UI Bootstrap Typeahead 通过 http.get 调用来实现自动完成功能以获取异步结果,但我不确定将其放在哪里?...仍在学习 ES 和 Angular。

我应该把这个 http.get 调用放在这个 js Promise 代码中的什么地方?

http.get代码:

return $http.get('localhost:9200/bigtestindex/doc/_search', {
params: {
"query": {
"match": {
"content.autocomplete": {
"query": query,
"default_operator": "and"
}
}
}
}
}),

Javascript promise 代码:

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

var terms = query.split(' '),
baseTerms = terms.length === 1 ? '' : terms.slice(0, -1).join(' ') + ' ',
lastTerm = terms[terms.length - 1].toLowerCase();

esClient.search({
index: 'bigtestindex',
body: {
"query": {
"simple_query_string": {
"fields": ['title'],
"query": baseTerms + '(' + lastTerm + '|' + lastTerm + '*)',
"default_operator": "and"
}
},
"suggest": {
"text": query,
"phraseSuggestion": {
"phrase": {
"field": "title",
"direct_generator": [{
"field": "title",
"suggest_mode": "popular",
"min_word_length": 3,
"prefix_length": 2
}]
}
}
},
"size": 5,
"_source": ["content"]
}
}).then(function(es_return) {
deferred.resolve(es_return);
}, function(error) {
deferred.reject(error);
});

return deferred.promise;
};

我很确定它会进入 body 的某个地方,只是不确定在哪里......我无法让它发挥作用。

最佳答案

我想,您的 Controller 代码可能如下所示:

function searchController(esClient)
{
var ctl = this;
ctl.suggestions = [];

this.getSuggestions = function(query) {
var terms = query.split(' '),
baseTerms = terms.length === 1 ? '' : terms.slice(0, -1).join(' ') + ' ',
lastTerm = terms[terms.length - 1].toLowerCase();

esClient.search({
index: 'bigtestindex',
body: {
"query": {
"simple_query_string": {
"fields": ['title'],
"query": baseTerms + '(' + lastTerm + '|' + lastTerm + '*)',
"default_operator": "and"
}
},
"suggest": {
"text": query,
"phraseSuggestion": {
"phrase": {
"field": "title",
"direct_generator": [{
"field": "title",
"suggest_mode": "popular",
"min_word_length": 3,
"prefix_length": 2
}]
}
}
},
"size": 5,
"_source": ["content"]
}
}, function(err, es_return) {
if(err) {
//Handle error or do nothing
return;
}
ctl.suggestions = es_return;
});
};
}

关于javascript - 在 JavaScript Promise 中放置 http get 调用的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com