Firebase的云端函数在Algolia中为Firebase数据库对象建立索引
问题描述:
我浏览了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中使用其密钥索引的整个对象?
答
好吧,我继续创建一个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中被索引。
你能证明你试过了吗?还请查看https://discourse.algolia.com/t/firebase-guide-firebase-cloud-functions-examples/777 –