如何从云功能获取Firebase项目名称或ID

时间:2017-05-19 19:51:51

标签: javascript node.js firebase google-cloud-functions

我正在使用云功能,并希望从我的一个Javascript服务器文件中获取项目名称。我知道该值存储在.firebaserc中,但我不认为该文件在服务器上可用,对吧?我想做这样的事情:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.getProjectName();  // or getProjectID()

functions.getProjectName(); 

9 个答案:

答案 0 :(得分:18)

谢谢@Frank。答案是: process.env.GCLOUD_PROJECT
我不确定变量process的来源,但这确实可以获得项目名称。

答案 1 :(得分:7)

Firebase管理员SDK可以为您访问该信息。

const admin = require('firebase-admin');
const projectId = admin.instanceId().app.options.projectId

答案 2 :(得分:3)

这对我有用。 (节点10)

const FIREBASE_CONFIG = process.env.FIREBASE_CONFIG && JSON.parse(process.env.FIREBASE_CONFIG);
const projectId = FIREBASE_CONFIG.projectId;

答案 3 :(得分:0)

当前我正在使用app.INTERNAL.credential_.projectId。 这显然不能节省,但是到目前为止,还没有凝聚力的方法来获得它(AFAIK)

答案 4 :(得分:0)

尝试:

const projectId = admin.instanceId().app['options_'].credential.projectId

答案 5 :(得分:0)

这是上面给出的答案的组合:

function getProjectID() {
  return firebaseInstance.options.projectId ||
    (firebaseInstance.options.credential && firebaseInstance.options.credential.projectId) || '';
}

或者在 TypeScript 中:

function getProjectID(): string {
  return firebaseInstance.options.projectId ||
    (firebaseInstance.options.credential && (firebaseInstance.options.credential as unknown as { projectId: string }).projectId) || '';
}

答案 6 :(得分:0)

对于在较新版本的 Node 上运行的云函数:

import firestore from "@google-cloud/firestore";

const client = new firestore.v1.FirestoreAdminClient();
const projectId = await client.getProjectId();

答案 7 :(得分:0)

来自the Firebase docs

<块引用>

process.env.FIREBASE_CONFIG:提供以下 Firebase 项目配置信息:

{
  databaseURL: 'https://databaseName.firebaseio.com',
  storageBucket: 'projectId.appspot.com',
  projectId: 'projectId'
}

请注意,由于它是一个 JSON 字符串,因此您需要像这样解析它:

const projectId = JSON.parse(process.env.FIREBASE_CONFIG).projectId;

或者,您可以在 Cloud Functions 中使用 firebase-functions 包中的 the undocumented firebaseConfig() method,如下所示:

import { firebaseConfig } from "firebase-functions";
const projectId = firebaseConfig().projectId;

此外,Google Cloud Platform(Firebase 在其上运行)会自动填充 environment variables documented here,具体取决于您使用的运行时。

答案 8 :(得分:-4)

您可以使用functions.config().firebase.projectId

PS初始化应用的最简单方法是admin.initializeApp(functions.config().firebase);