是否可以使用Laravel Endpoint作为Algolia Autocomplete索引?
Laravel Side:
Route::get('/search',function(){
$query = request(q);
return App\Contacts::search($query)->where('company_id',2)->raw();
}
前端
var index = 'http://laravel.app/search';
$('#contacts').autocomplete({ hint: false }, [
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5 }),
displayKey: 'name',
templates: {
dropdownMenu: '#my-custom-menu-template',
footer: '<div class="branding">Powered by <img src="https://www.algolia.com/static_assets/images/press/downloads/algolia-logo-light.svg" /></div>',
suggestion: function(suggestion) {
return suggestion._highlightResult.iata.value + ' '+ suggestion._highlightResult.name.value ;
}
}
}
]);
答案 0 :(得分:4)
我认为在autocomplete.js中更改端点是不容易的。它需要修改库。
我可以问你为什么要这样做吗?不建议打电话给你的后端,最好直接打电话给Algolia。在后端使用Algolia的主要原因是快速集成它,而不是使用autocomplete.js或InstantSearch.js等前端库。既然你愿意使用它们,你应该直接打电话给Algolia。它将节省大量的网络延迟并卸载您的服务器。
每次有人搜索时,查询都将是:
浏览器 - &gt; Algolia - &gt;浏览器强>
而不是
浏览器 - &gt;服务器 - &gt; Algolia - &gt;服务器 - &gt;浏览器强>
答案 1 :(得分:0)
在不知道Algolias API的情况下,我会使用Curl或Guzzle向那里的API发送一个GET请求(或者他们想要的任何东西),根据自动完成JS期望的内容转换响应并将其推回到前端。 / p>