NodeJS 查询不是函数错误使用firebase函数调用firebase firestore

kkbh8khc  于 11个月前  发布在  Node.js
关注(0)|答案(2)|浏览(128)

我试图从firestore使用firebase函数gen2拉一个集合。我的代码看起来像下面

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

initializeApp();
const db = getFirestore();

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

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

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

字符串
在运行此失败与错误查询不是一个功能.

9avjhtql

9avjhtql1#

在撰写本文时,用于Firebase的Node SDK仍然使用命名空间的API语法。对于firebase-admin SDK,这是由@google-cloud/firestore Client SDK提供的。query()是随Firebase Cloud Firestore Modular SDK引入的,在Node SDK中不可用。
要更正代码,请替换以下行:

const appRef = db.collection("feedback");
const appQuery = db.query(appRef);
const querySnapshot = await getDocs(appQuery);

字符串

const appColRef = db.collection("feedback"); // best practice to use "ColRef" instead of just "Ref"
const querySnapshot = await appColRef.get()


在某种程度上,您可以参考Modular SDK Upgrade Guide并使用它来降低您对客户端代码的熟悉程度。

注意:firebase-functions/v2/firestore用于定义第二代Firestore Cloud Functions,不用于访问您的Firestore数据库。这是firebase-admin/firestore的责任。

js4nwp54

js4nwp542#

要在firebase函数v2中查询集合,您应该使用await db.collection("feedback").where("user", "==", "bob").get()

相关问题