Algolia官方提供了Firebase扩展来帮助实现实时搜索功能。然而,原始扩展不支持子集合的索引。以下是实现Algolia Firebase扩展子集合索引的步骤:
1.安装Algolia的Firebase扩展
npm install -g firebase-tools firebase login firebase init
选择Algolia扩展并按照指示完成安装。
2.在Algolia中创建索引
const algoliasearch =require('algoliasearch'); const client = algoliasearch('APPLICATION_ID','API_KEY'); const index = client.initIndex('INDEX_NAME');
3.编写云函数
函数应该在每次写操作完成后触发,并使用collectionGroup()来获取子集合的所有文档。
const functions=require('firebase-functions'); const admin=require('firebase-admin'); admin.initializeApp(functions.config().firebase);
exports.indexMyCollectionGroup = functions.firestore.document('PARENT_COLLECTION/{parentCollectionId}/SUB_COLLECTION/{subCollectionId}/{subDocId}').onCreate((snap, context) => {
const subCollectionId = context.params.subCollectionId;
const parentCollectionId = context.params.parentCollectionId;
const subDocId=context.params.subDocId;
const record = snap.data();
record.objectID = subDocId;
return index.saveObject(record);
});
4.完成
现在,子集合中的每个新增文档都会自动同步到Algolia中。您可以通过Algolia查询API来检索这个索引。