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

升级Firebase模块化版本后array-contains-any查询失效求助

解决Firebase模块化版本中array-contains-any查询报错问题

升级Firebase到模块化版本后,原正常运行的array-contains-any查询抛出错误:Firebase: Uncaught (in promise) TypeError: V is not a function。

报错代码

const q = query(usersCollection, where("interests", "array-contains-any", [route.params.filter]));
const users = [];
const snapshot = await getDocs(q);
snapshot.docs.forEach((s) => {
  if(!interacted.includes(s.data().email)){
    users.push(s.data());
  }
});

旧版本正常代码

var snapshot = await store.collection("users").where("interests", "array-contains-any", [route.params.filter]).get()

解决方法

  1. 校验查询参数有效性
    模块化Firestore对array-contains-any的参数要求更严格,必须传入包含至少一个非空元素的数组。先确认route.params.filter不是undefined、null或空字符串:
const filterVal = route.params.filter;
// 空值直接返回,避免无效查询
if (!filterVal) {
  return [];
}
// 执行查询
const q = query(usersCollection, where("interests", "array-contains-any", [filterVal]));
const snapshot = await getDocs(q);
// 后续处理逻辑不变
  1. 确认SDK导入正确性
    确保query、where、getDocs均从Firebase Firestore模块正确导入:
import { query, where, getDocs, collection } from "firebase/firestore";
  1. 排查参数类型
    如果route.params.filter本身是数组类型,无需再包裹一层数组。但从旧代码逻辑看,这里应该是单个值,所以只需保证该值有效即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:37:08