【发布时间】:2017-10-17 09:26:16
【问题描述】:
我可以使用以下代码将除 _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