2017-06-13 118 views
1

我瀏覽了docs,github存儲庫,但沒有爲我工作。Firebase的雲端函數在Algolia中爲Firebase數據庫對象建立索引

我的數據結構:

App { 
    posts : { 
     <post_keys> : { 
      auth_name : "name", 
      text : "some text" //and many other fields 
         } 
      } 
    } 

1)Github repository:如果我用這個,我只是從一個函數得到一個領域,如果我需要所有的領域,我需要寫爲每個獨立的功能,這是一個糟糕的做法。

2)Algolia Official Docs for Node.js:這不能作爲雲功能部署,但它做我打算做的。

我該如何編寫一個可部署在Firebase上的函數,並獲取在Algolia中使用其密鑰索引的整個對象?

+0

你能證明你試過了嗎?還請查看https://discourse.algolia.com/t/firebase-guide-firebase-cloud-functions-examples/777 –

回答

2

好吧,我繼續創建一個Firebase雲端函數,以索引Algolia索引中的所有對象。這是解決方案:

什麼你做的是這樣的:

exports.indexentry = functions.database.ref('/blog-posts/{blogid}/text').onWrite(event => { 

你應該做的是:

exports.indexentry = functions.database.ref('/blog-posts/{blogid}').onWrite(event => { 
    const index = client.initIndex(ALGOLIA_POSTS_INDEX_NAME); 
    var firebaseObject = event.data.val(); 
    firebaseObject.objectID = event.params.blogid; 

    return index.saveObject(firebaseObject).then(
    () => event.data.adminRef.parent.child('last_index_timestamp').set(
      Date.parse(event.timestamp))); 
}); 

所不同的是在第一行:在第一種情況,您只能聽取text的更改,因此您只能獲取包含文本更改的數據。 在第二種情況下,由於您收聽所有博客對象中的更改(請注意/text的刪除方式),因此您將獲得整個對象。

我測試了它,它適用於我:整個對象包括作者在Algolia中被索引。

相關問題