【问题标题】:Access Firebase Child Node in Node.js - Firebase Cloud Functions在 Node.js 中访问 Firebase 子节点 - Firebase Cloud Functions
【发布时间】:2017-10-17 09:26:16
【问题描述】:

这是我的 Firebase 架构的布局方式:

我可以使用以下代码将除 _geoloc: 之外的所有内容编入我的 Algolia 索引:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

// Authenticate to Algolia Database.
// TODO: Make sure you configure the `algolia.app_id` and `algolia.api_key` Google Cloud environment variables.
const algoliasearch = require('algoliasearch');
const client = algoliasearch(functions.config().algolia.app_id, functions.config().algolia.api_key);

// Name fo the algolia index for content.
const ALGOLIA_POSTS_INDEX_NAME = 'businessSearch';


exports.indexentry = functions.database.ref('/businessSearch/{uid}/').onWrite(event => {
    const index = client.initIndex(ALGOLIA_POSTS_INDEX_NAME);
    const firebaseObject = Object.assign({}, event.data.val(), {
      functions.database.ref('/businessSearch/{uid}/_geoloc').onWrite(event =>{

      })
      objectID: event.params.uid,
    });

    index.saveObject(firebaseObject); // .then or .catch as well
    index.addObject
  });

如何使用 Node.js 将 _geoloc: 子节点索引到我的 Algolia 索引中?

我在某处听说无法使用 Object.assign 索引嵌套对象,但我只是想看看是否可以。

【问题讨论】:

  • 对您在这里要做什么感到非常困惑。在/businessSearch/{uid} 上的onWrite 将在其_geoloc 有效负载中包含_geoloc——您不需要单独收听子节点。
  • 不,它没有。我正在索引我的 Algolia 搜索索引。只有地址、业务名称和业务类型被索引而不是 _geoloc
  • 这似乎是 Algolia 的问题,而不是 Firebase 的问题。如果你做一个console.log(event.data.val()),你应该看到_geoloc。也许 Algolia 默认会忽略带下划线的字段?
  • 似乎是更新数据库时的时间问题我手动添加了另一个值键对,然后添加了_geoloc。

标签: javascript node.js firebase firebase-realtime-database algolia


【解决方案1】:

在写入数据库和被 Algolia 索引的内容时存在时间问题。我的问题中包含的代码确实适用于嵌套对象。

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2018-11-23
    • 2017-11-03
    • 1970-01-01
    • 2017-09-24
    • 2020-02-01
    • 2023-03-11
    • 2018-01-14
    相关资源
    最近更新 更多