2017-06-13 67 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中被索引。

相关问题