【问题标题】:Cloud Functions for Firebase to index Firebase Database Objects in AlgoliaCloud Functions for Firebase 用于索引 Algolia 中的 Firebase 数据库对象
【发布时间】:2017-06-13 22:41:12
【问题描述】:

我浏览了文档、github 存储库,但还没有对我有用。

我的数据结构:

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 中的键索引整个对象?

【问题讨论】:

标签: javascript node.js firebase google-cloud-functions algolia


【解决方案1】:

好的,所以我继续创建一个 Firebase Cloud 函数,以便为 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 是如何被删除的)。

我对其进行了测试,它对我有用:包括作者在内的整个对象都在 A​​lgolia 中被索引。

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多