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

使用Firebase Gen2函数调用Firestore时出现query is not a function错误

问题解决:Firebase Functions Gen2 拉取Firestore集合报错 "query is not a function"

错误原因

  1. getDocs导入路径错误:你从firebase-functions/v2/firestore导入getDocs,但这个模块的getDocs是用于Firestore触发器的方法,并非Admin SDK中读取文档的工具方法。
  2. 不存在的db.query方法:Firebase Admin SDK的Firestore实例没有query方法,集合引用本身就可以直接用于获取文档快照。

修正后的代码

const { initializeApp } = require('firebase-admin/app');
const { getFirestore, getDocs } = require('firebase-admin/firestore');
const { onRequest, logger } = require("firebase-functions/v2/https");

initializeApp();
const db = getFirestore();

const cors = require('cors')({origin:true});

exports.getReviews = onRequest(async(request, response) => {
    cors(request, response, async() => {
        logger.info("getReviews logging!", {structuredData: true});
   
        const reviews = [];
        const appRef = db.collection("feedback");
        const querySnapshot = await getDocs(appRef);
        
        querySnapshot.forEach((doc) => {
            reviews.push(doc.data());
        });

        response.send(reviews);
      });
 });

关键修正点

  • 把getDocs的导入源改为firebase-admin/firestore,这是Admin SDK中查询Firestore文档的正确入口。
  • 删除多余的db.query(appRef)调用,直接将集合引用appRef传入getDocs即可完成查询。
  • 补充导入onRequest和logger(原代码中使用了这两个方法但未声明导入)。
  • 移除不必要的any类型标注(JavaScript环境无需此类标注,TypeScript环境可根据需求替换为更精准的类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:17:09