Firebase Functions Gen2中Firestore Where查询执行失败排查
Firebase Cloud Functions Gen2 Firestore查询错误排查与解决方案
错误原因分析
- Firestore实例初始化错误:初始化代码中
const db = getFirestore未调用函数,db实际指向的是getFirestore函数本身,而非Firestore实例,后续操作会引发异常。 - 查询方法调用顺序错误:
appColRef.get().where("uid", "==", uid)的调用顺序颠倒,get()方法返回的是Promise对象,不具备where方法;正确逻辑应先通过where构建查询条件,再调用get()获取查询快照。
修正后的代码
1. 修正Firestore初始化代码
import {onRequest} from "firebase-functions/v2/https"; import * as logger from "firebase-functions/logger"; const { initializeApp } = require('firebase-admin/app'); const { getFirestore } = require('firebase-admin/firestore'); const { getFunctions} = require("firebase-admin/functions"); initializeApp(); // 调用getFirestore函数获取实例 const db = getFirestore();
2. 修正查询逻辑代码
if(uid !== ''){ try{ const questions:any = [] const appColRef = db.collection("sessions"); // 先调用where构建查询,再调用get()获取快照 const querySnapshot = await appColRef.where("uid", "==", uid).get(); querySnapshot.forEach((doc:any) => { const data = doc.data(); questions.push(data.message); }); logger.log("all questions are:", questions); }catch(err){ console.log("Failed to fetch sessions:", err); } }
内容的提问来源于stack exchange,提问作者Moblize IT
相关产品推荐
相关产品推荐

