ruby-on-rails - 是否有针对无效 token 错误的 Algolia 即时搜索回调?

标签 ruby-on-rails error-handling algolia

我正在构建一个带有 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/

相关文章:

ruby-on-rails - apache 上的 redmine 找不到 Rack

html - 如何使用填充将文本字段拉伸(stretch)到父 div 的宽度?

c# - 中止进一步的程序执行

ruby-on-rails - Rails中的管理功能: Error: Couldn't find User with 'id' =

algolia - Algolia 有带推荐的搜索吗?

php - 当直接使用数据库更新内容时,如何在 Laravel 中使用正确的数据更新搜索索引?

ruby-on-rails - 如何在 RoR 中实现脏话过滤器?

ruby-on-rails - Scala 中是否有 Rails "returning"方法的模拟?

java - 处理 Volley 中的错误(有 future )?

Algolia 搜索 Facet 地理定位