是否有Algolia即时搜索回调无效令牌错误



我正在用Ruby on Rails后端和ReactJS前端构建一个web应用程序。我正在使用Algolia instantsearch.js搜索页面,我想使用用户密钥来创建一个密钥,当页面加载和删除访问该密钥时,用户注销。我还想让它们在2小时后过期。

所有这些都很好,但是有时在instantsearch客户端尝试连接之前,新创建的用户密钥无法访问索引(很奇怪,对吧?),导致初始"搜索"失败,Algolia的服务器返回一个无效的密钥错误,并且结果部分为空白。不过,在之后的栏中立即键入搜索,键就会被接受。

我已经决定,当返回一个无效的键错误时,我希望客户端暂停一会儿,然后再试一次。如果失败,我希望向用户显示一条错误消息。这也是为了解决令牌过期的问题,而用户仍在使用它-消息可以直接要求用户刷新页面,避免混乱的突然无响应的应用程序。

有没有办法用即时搜索做到这一点?在标准的Algolia搜索中,您可以添加回调或像这样指定:

index.search({
  filters: 'smartphone AND retina' // smartphone AND retina
}, function searchDone(err, content) {
  if (err) {
    console.error(err);
    return;
  }
  console.log(content);
});

但是,由于instantsearch应该"只是工作",所以我似乎无法控制搜索功能。

SearchResults应该显示结果,它可以很好地从成功的搜索中获得点击,但据我所知,它们不存储响应代码。不过,如果我错了,那就太棒了。

这被建议用于获得类似回调的行为,但这些解决方案适用于render方法,我认为如果整个客户端从一开始就出错,则不会发生这种情况。

当您在Algolia中使用add_user_key时,在密钥的创建和传播之间有一个小延迟,因此对您的用户来说是一个问题。在已加载的集群上,这可能需要几秒钟。

检查API密钥是否准备好使用的一种方法是轮询get_user_key_acl,直到它返回200 HTTP代码。

我们通常推荐使用secured_api_keys
Algolia的安全API密钥使用具有参数组合的实际API密钥。它们提供了与实际API密钥相同的限制功能(具有相同的安全性),但可以与尽可能多的帐户一起使用,动态更改而不必为所有客户重新生成所有API密钥,最终立即可用。

最新更新