【发布时间】:2020-12-16 16:58:08
【问题描述】:
我的 firebase 应用中有多个数据库实例。我正在尝试在 firebase 云函数中写入三个数据库实例。遵循此document 我的理解是无需为每个数据库实例初始化多个应用程序。我们可以初始化一个并传入数据库 url。作为旁注,我有另一个具有类似功能的函数,我在一个数据库中触发事件并将数据写入其他数据库实例,它工作正常。
import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
const app = admin.app();
export const onStart =
functions.database.instance('my-db-1')
.ref('path')
.onCreate(async (snapshot, context) => {
return await onCreate('my-db-1',snapshot,context);
});
export const onStartDb01 = functions.database.instance('my-db-2')
.ref('path')
.onCreate(async (snapshot, context) => {
return await onCreate('my-db-2', snapshot, context);
});
async function onCreate(dbInstance: string, snapshot:
functions.database.DataSnapshot, context: functions.EventContext):
Promise<any> {
const defaultDb = app.database(defaultDbUrl);
const actvDb = app.database(actvDbUrl);
await defaultDb.ref('path')
.once("value")
.then(snap => {
const val = snap.val();
---do something and write back---
});
await actvDb.ref('path')
.once("value")
.then(snap => {
const val = snap.val();
---do something and write back---
});
return true;
}
但是当一个 db 事件被触发时,它会记录如下错误
错误:FIREBASE 致命错误:数据库已初始化多次。请确保数据库 URL 的格式与每个 database() 调用匹配。
【问题讨论】:
-
请编辑问题以显示未按预期方式工作的整个代码。尤其是如何初始化每个变量。该问题应包含足够的信息,以便任何人都可以重现该问题。
-
它在我看来仍然不完整。
defaultDbInstance和secondDb到底是什么?他们在这里没有任务。 -
@DougStevenson 它们是数据库名称。
标签: firebase firebase-realtime-database google-cloud-functions