Javascript 我应该在哪里声明新的firebase数据库实例?

Javascript 我应该在哪里声明新的firebase数据库实例?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,在使用时,我在云函数脚本中的何处声明这一点是否重要 例如,index.ts包含我的所有云函数,我应该在顶部声明它,还是在每个单独的函数中声明它 const db = firebase.database() export const functionA = functions.https.onCall(async (data, context) => { // use db here }); export const functionB = functions.https.onCall

在使用时,我在云函数脚本中的何处声明这一点是否重要

例如,
index.ts
包含我的所有云函数,我应该在顶部声明它,还是在每个单独的函数中声明它

const db = firebase.database()
export const functionA = functions.https.onCall(async (data, context) => {
   // use db here
});
export const functionB = functions.https.onCall(async (data, context) => {
   // use db here
});

export const functionA = functions.https.onCall(async (data, context) => {
    const db = firebase.database()
});
export const functionB = functions.https.onCall(async (data, context) => {
    const db = firebase.database()
});

或者这无关紧要?

当代码加载时,第一种方法创建
db
实例

第二种方法是在代码运行时创建
db
实例

两者都不比另一个好,而且
firebase.database()
操作非常轻量级,因此在实践中可能没有什么不同


区别在于是否首先加载数据库SDK。Firebase中的一些SDK相当大,并非每个云功能都需要所有SDK。因此,加快加载/冷启动时间的常见技巧是将
require('firebase-…')
语句移动到需要它们的云函数体中。

第一种方法是在代码加载时创建
db
实例

第二种方法是在代码运行时创建
db
实例

两者都不比另一个好,而且
firebase.database()
操作非常轻量级,因此在实践中可能没有什么不同


区别在于是否首先加载数据库SDK。Firebase中的一些SDK相当大,并非每个云功能都需要所有SDK。因此,加快加载/冷启动时间的一个常见技巧是将
require('firebase-…')
语句移动到需要它们的云函数体中。

通常,如果您想要交互,请从云函数,使用实时数据库,您只需初始化AdminSDK并获取默认应用程序(或给定应用程序)的数据库服务,如文档中所述

所以你可以这样做:

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

admin.initializeApp();
// Get the Database service for the default app
const db = admin.database();

要了解Frank在回答中对冷启动的解释的更多细节,您应该阅读以下文章:


然而,在您的情况下,由于您的两个云函数使用AdminSDK,正如Frank所提到的,在您的问题中提出的两种方法之间应该没有任何区别

通常,如果您想通过云功能与实时数据库交互,只需初始化Admin SDK并获取默认应用程序(或给定应用程序)的数据库服务,如文档中所述

所以你可以这样做:

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

admin.initializeApp();
// Get the Database service for the default app
const db = admin.database();

要了解Frank在回答中对冷启动的解释的更多细节,您应该阅读以下文章:

然而,在您的情况下,由于您的两个云函数使用AdminSDK,正如Frank所提到的,在您的问题中提出的两种方法之间应该没有任何区别