【发布时间】:2019-10-03 17:24:48
【问题描述】:
假设我通过 where 和 orderBy 和 limit 得到以下简单查询,这将返回我的公开资料(因此 where),这是最近更新的(因此 orderBy)。
db.collection('profile')
.where('public_profile', '==', true)
.orderBy('updated_at', 'desc')
.limit(1)
.onSnapshot(function(doc) {
...
});
现在,我想添加一些额外的逻辑,这意味着我只想显示低于某种级别的个人资料。当我执行以下操作时:
db.collection('profile')
.where('public_profile', '==', true)
.orderBy('updated_at', 'desc')
.where('level', '<=', 5)
.limit(1)
.onSnapshot(function(doc) {
...
});
我得到以下错误:
查询无效。你有一个不等式的 where 过滤器(小于, lessThanOrEqual、greaterThan 或 greaterThanOrEqual) 在字段上 'talent.level' 所以你也必须使用'level' 作为你的第一个 queryOrderedBy 字段,但您的第一个 queryOrderedBy 当前处于启用状态 字段“updated_at”。
据我了解,我需要添加额外的 orderBy,提供以下信息:
db.collection('profile')
.where('public_profile', '==', true)
.where('level', '<=', 5)
.orderBy('level', 'desc')
.orderBy('updated_at', 'desc')
.limit(1)
.onSnapshot(function(doc) {
...
});
但是,这给我带来了错误的结果:它不返回最近更新的公共配置文件,其级别低于或等于 5。它返回我最近更新的公共配置文件,该配置文件具有最高级别。
你们有没有发现类似的问题?如果是,您的解决方案是什么?
【问题讨论】:
标签: javascript firebase google-cloud-firestore