首页 > 解决方案 > 当我有额外的不等式 where() 标准时,如何从 firestore 集合中获取随机文档?

问题描述

我正在尝试编写一个nodejs云函数来从我在firestore中的'profiles'集合中获取一个随机文档,如下所示:

randomProfile = await admin.firestore().collection('profiles')
.where('fieldA', '==', ...)
.where('fieldB', '==', ...)
.where('fieldC', '==' ...)
.where('fieldD', '==',...)
.where('fieldE', '<=', ...)
.where('fieldE', '>=', ...)
.offset(random)
.limit(1)
.get()

由于我使用了<=and >=for fieldE,并且由于 firestore只允许在一个字段上存在不等式,因此我正在尝试使用 offset 子句来获取随机文档。

我的问题是:如何为random没有“越界”条件的值分配一个值?换句话说,我不想random大于查询可以返回的文档数量......

请帮忙!这是在我当前的项目中继续使用 Firestore 的成败问题,而且我已经走得太远了!

注意:由于问题,我无法使用此解决方案fieldE

标签: node.jsfirebasegoogle-cloud-firestorefirebase-admin

解决方案


推荐阅读