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