我试图在Android应用程序中实现使用Cloud firestore
作为数据库的全文搜索,因此在文档中他们说firestore
不支持它并转到Algolia
(第三方) ,最初我尝试使用algolia
搜索一些示例数据并且效果很好。现在我需要将数据从firestore
同步到algolia,我只获取实时数据库的文档而不是云{{1 }}。
由Algolia提供的文档,由google提供的文档,
他们给node.js函数和node.js的新东西。我找不到任何与firestore与algolia同步的教程,所以任何人都知道从哪里开始?我能够使用节点js将数据上传到firestore,我需要将数据从firestore导出到algolia。我使用google给出的node.js尝试了它。这是错误即时获取。我试过更改节点版本,但没有用。
firestore
这是我在firestore中为文档提供的文档的路径
path.js:28
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'path', 'string');
^
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string
at assertPath (path.js:28:11)
at Object.join (path.js:1244:7)
at database (/Users/Desktop/Projects/FirebaseCLI/functions/node_modules/firebase-functions/lib/providers/firestore.js:36)
at Object.document (/Users/Desktop/Projects/FirebaseCLI/functions/node_modules/firebase-functions/lib/providers/firestore.js:44)
at Object.<anonymous> (/Users/Desktop/Projects/FirebaseCLI/functions/index.js:27)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
答案 0 :(得分:0)
这是由于未设置GCLOUD_PROJECT
环境变量。我在这里创建了pull request以显示更有用的错误消息。
要设置环境变量,您可以使用cross-env:cross-env GCLOUD_PROJECT=whatever
。
答案 1 :(得分:0)
Cloud Firestore不支持本机索引编制或在文档中搜索文本字段。此外,下载整个集合以在客户端搜索字段是不切实际的。
因此,我建议一种解决方法,在某些情况下可能会有用。
在将文本保存到Firestore中之前,将其转换为数组。
现在,只需使用split即可完成此操作,因为它需要使用正则表达式:
String s = "This is a sample sentence with []s.";
String[] words = s.split("\\W+");
这将给出以下单词:{“ this”,“ is”,“ a”,“ sample”,“ sentence”,“ s”}
您可以使用array-contains运算符基于数组值进行过滤。例如:
CollectionReference dokRef = db.collection("dok");
dokRef.whereArrayContains("sentence", "sample");
此查询返回“句子”字段是包含单词样本的数组的每个dok文档。如果该数组具有要查询的值的多个实例,则该文档仅包含在结果中一次。
请告诉我是否有人有更好的主意。