2017-09-28 67 views
1

我有一個函數,每次用戶更新條目時都會執行該函數,以便使條目列表保持最新狀態。我遇到的問題是,當我在索引上運行.clearCache()時,即使我在運行實際搜索功能之前執行該操作,但需要兩次重新加載才能獲得最新更新。它的行爲好像是重新加載。我不知道是什麼導致了這一點,但這裏是我的搜索功能:對空搜索結果使用Javascript AlgoliaJS .clearCache()始終是「搜索後面」

search() { 

    this.results = []; 
    // Clear the algolia cache 
    this.auditionsIndex.clearCache(); 
    this.auditionsIndex.search('', options).then(result => { 
     if(result.hits && result.hits.length > 0) { 
     this.results = result.hits; 
     } 

     // Clear the cache one more time 
     this.auditionsIndex.clearCache(); 
    }); 
    } 

回答

4

在Algolia指數變化有事異步,當你執行像index.saveObject()無極/回調的結果,事情將與taskId對象。然後你可以爲該任務index.waitTask,併發送一些事件到你的前端,讓它知道清除緩存和搜索。

看到https://www.algolia.com/doc/api-reference/api-methods/wait-task/#methods

+0

嗯有沒有什麼辦法,我可以在前端使用?我有一個節點服務器,它基本上監聽Firebase樹節點的任何更改,一旦它完成,它會自動添加/更新/從Algolia中刪除對象。由於它都是實時的,所以沒有真正的方法來「等待」,然後將它發送到前端:/ –