Ada*_*dam 4 error-handling ruby-on-rails algolia
我正在构建一个带有Ruby on Rails后端和ReactJS前端的Web应用程序.我正在使用Algolia instantsearch.js作为搜索页面,我想在页面加载时使用用户密钥创建密钥,并在用户注销时删除该密钥的访问权限.我也希望它们在2小时后过期.
所有这一切都很顺利,但有时新创建的用户密钥在instantsearch客户端尝试连接之前无法访问索引(很奇怪,对吧?),导致初始"搜索"失败,无效的密钥错误由Algolia的服务器返回,以及一个空白的结果部分.但是,紧接着在栏中键入搜索,然后接受键.
我已经决定,当返回无效的密钥错误时,我希望客户端暂停一会儿再试一次.如果失败,我希望向用户显示一条错误消息.这也是为了解决用户仍在使用它时令牌过期的问题 - 该消息可以只是要求用户刷新页面,避免突然无响应的应用程序混淆.
有没有办法用instantsearch做到这一点?在标准的Algolia搜索中,您可以添加回调或指定如下:
index.search({
filters: 'smartphone AND retina' // smartphone AND retina
}, function searchDone(err, content) {
if (err) {
console.error(err);
return;
}
console.log(content);
});
Run Code Online (Sandbox Code Playgroud)
但是因为即时搜索应该"正常工作",所以我似乎无法控制搜索功能.
SearchResults应该显示结果,它可以很好地获得成功搜索的命中,但从我所知道的,它们不存储响应代码.不过,如果我错了,那将是非常棒的.
这被建议用于获得类似回调的行为,但是这些解决方案适用于该render方法,如果整个客户端从一开始就出错,我认为不会发生这种情况.
当您add_user_key在Algolia中使用时,密钥的创建与其传播之间会有一点延迟,因此对您的用户来说就是问题.在加载的群集上,这可能需要几秒钟.
检查API密钥是否可以使用的方法是轮询,get_user_key_acl直到它返回200 HTTP代码.
我们通常建议使用secured_api_keys.
Algolia的安全API密钥使用具有参数组合的实际API密钥.它们提供与实际API密钥相同的限制功能(具有相同的安全性),但可以根据需要与多个帐户一起使用,动态更改,无需为所有客户重新生成所有API密钥,最终可立即使用.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |