You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase 'not-in'操作符查询失效问题求助

问题原因及解决办法
  • 你用的not-in逻辑不对:Firestore里not-in是判断字段值本身不在指定列表中,但你的read_by是数组类型,数组和单个user.uid字符串永远不相等,所以这个条件相当于没起作用,自然会返回所有文档。
  • 要查询数组不包含某个元素,得用not-contains操作符,这才是Firestore专门用来检查数组元素的逻辑。

修正后的代码:

const q = query(messagesRef, where('read_by', 'not-contains', user.uid))
const docs = await getDocs(q)
// 要统计数量直接取docs.size即可
const unreadCount = docs.size

补充提醒:

  • contains/not-contains仅支持检查数组中的单个元素,无法同时校验多个元素;
  • 如果read_by是空数组,这个查询也会把这类文档算进来,逻辑上是对的——空数组确实不包含目标用户ID。

内容的提问来源于stack exchange,提问作者jhnxx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:05:34