我正在尝试编写一个nodejs云函数,以从Firestore的“个人资料”集合中获取随机文档,如下所示:
randomProfile = await admin.firestore().collection('profiles')
.where('fieldA', '==', ...)
.where('fieldB', '==', ...)
.where('fieldC', '==' ...)
.where('fieldD', '==',...)
.where('fieldE', '<=', ...)
.where('fieldE', '>=', ...)
.offset(random)
.limit(1)
.get()
由于我用尽了<=
的{{1}}和>=
,并且由于firestore允许one field only上的不等式,所以我试图使用offset子句来得到一个随机文件。
我的问题是:如何为fieldE
分配一个值,以使我没有“越界”条件?换句话说,我不希望random
大于查询可以返回的文档数量...
请帮助!在我当前的项目中继续使用firestore是一个成败的问题,而我走得太远了!
注意:由于random
的问题,我无法使用this solution。
答案 0 :(得分:0)
好的,用firestore似乎无法实现我想要的功能,因此我通过使用Elasticsearch解决了这个问题。很遗憾,因为我必须将配置文件存储两次:一次在firestore上,一次在elasticsearch上。在这个时候,我对firestore感到幻灭了……除了帮助我扩展之外,不知道它到底对我有多大帮助。但是哎呀,我必须自己扩展弹性搜索。