Algolia Javascript前端客户端search – .clearCache只有第一次运行,然后结果已过时,需要重新加载

我一直在努力解决这个问题几个星期,在我的Ionic应用程序中,我有一个简单的“search”,我没有search的文本,只使用filter。 Algolia通过Nodejs脚本与Firebase服务器同步,当我在Firebase中创build/更新/删除条目时,它会自动更新Algolia中的该对象。

问题是,当我从我的应用更新Firebase中的对象时,我自动再次调用Algolia以获得更新的结果集。 但是,当我这样做时,更新的结果不会出现,直到第二次,我必须重新加载结果。 它应该这样做,一旦我更新和重新加载,但它需要第二次重新加载。

我应该注意到,当我第一次加载Algolia的结果,然后做一个创build/更新/删除操作,它会显示正确,但随后的更新似乎有所不同,基于Algolia和Firebase之间的竞争条件。 我试过添加一个setTimeout()因为我相信这可能与这个种族问题有关。 似乎同步几乎立即发生,但即使延迟了500毫秒,它仍然遇到这个问题,结果不一致。 如果我把延时增加到至less1500ms – 5000ms,似乎每一次都会工作,但这一切都取决于networking连接。 有一个更好的方法吗?

Algolia的索引操作是asynchronous的,并且暴露一个task ,您可以等待完成。

基本上这意味着,虽然索引速度非常快,但并不是即时可用的。

您还应该知道Algolia JS客户端(您在前端使用的)默认有一个caching,您可以在任务完成时用clearCache清除。

阅读FAQ和waitTask