首页 > 解决方案 > 在云函数定义之外初始化数据库引用是否安全?

问题描述

我将以下内容写为“我的第一个云功能”的 hello-world 类型:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp();
const db = admin.database();
const messagesRef = db.ref('/messages/general');

export const sendMessage = functions.https.onCall(async (data, context) => {

  const writeResult = await messagesRef.push(data.text)

  return {
    result: writeResult
  };
});

请注意,admin、db 和 messagesRef 都在函数定义之外声明,以便不必每次都这样做。

这种方法有效吗?这样做有什么问题吗?例如,如果数据库连接以某种方式丢失(可能是由于中断),这会重新启动并安全地重新连接吗?

标签: node.jsfirebasefirebase-realtime-databasegoogle-cloud-functions

解决方案


aDatabaseReference所做的只是指向数据库中的某个位置,因此此时不会发生与数据库的交互。由于messageRef不依赖于传入的任何数据sendMessage,因此可以在全局范围内安全地对其进行初始化。


推荐阅读