使用 Firebase 函数时,如何将 Firestore 集合引用提取到帮助程序中?

问题描述 投票:0回答:1

我正在制作与 Firestore 交互的 Firebase 函数。为了避免重复和拼写错误,我想从一个辅助文件中导出所有 Firestore 集合引用,但这样做会导致

RangeError: Maximum call stack size exceeded
部署错误。

我的助手的简化版本如下所示:

firestore-collections.ts

import { getFirestore } from "firebase-admin/firestore";

const firestore = getFirestore();

const getColRef = (collectionName: string) => {
  const colRef = firestore.collection(collectionName);
  return colRef;
};

export const colRefs = {
  cities: getColRef("cities"),
  countries: getColRef("countries"),
  projects: getColRef("projects"),
};

Firebase 函数中助手的使用:

测试函数.ts

import { logger } from "firebase-functions/v2";
import { onRequest } from "firebase-functions/v2/https";

import { colRefs } from "./firestore-collections";

export const testFunction = onRequest(async (req, res) => {
  // Example use of colRefs, gets the 'cities' collection and logs a doc id
  // Commenting this out removes the deployment error
  const docRef = colRefs.cities.doc();
  logger.info(docRef.id);
  // Return success
  res.status(200).send("Success");
});

导出所有 Firebase 函数的索引文件:

index.ts

import { initializeApp } from "firebase-admin/app";
initializeApp();

export * from "./test-function";

每当我在

colRefs
中导入并使用
testFunction
时,我都会在部署时收到此错误:

收到响应代码400; body 无法从函数源生成清单:RangeError:超出最大调用堆栈大小

注意:我正在使用第 2 代 Firebase 函数

javascript typescript firebase google-cloud-functions
1个回答
0
投票

想通了。

const firestore = getFirestore()
需要进入
getColRef
函数内部。

像这样:

import { getFirestore } from "firebase-admin/firestore";

const getColRef = (collectionName: string) => {
  const firestore = getFirestore();
  const colRef = firestore.collection(collectionName);
  return colRef;
};

export const colRefs = {
  cities: getColRef("cities"),
  countries: getColRef("countries"),
  projects: getColRef("projects"),
};
© www.soinside.com 2019 - 2024. All rights reserved.