【发布时间】:2019-12-04 08:34:44
【问题描述】:
我有一个特定的用例,我在一个项目上有多个实时数据库(这个数字会增加),我想在所有这些数据库上设置云函数触发器,目前我希望有办法在触发云函数的回调中获取数据库名称?
import * as functions from 'firebase-functions';
import mongoose from 'mongoose';
export const updateData = functions.database.ref('/someendpoint/{code}').onUpdate(async (change, context) => {
$dbName = getFireBaseDBName(); //some function to get the DB name - This is the step that I would like to know how
await mongoose.connect(`mongo-db-string-connection/${dbName}`, {useNewUrlParser: true});
const Code = context.params.code;
const Schema = new mongoose.Schema({}, { collection: `someendpoint`, strict: false });
const Model = mongoose.model(`someendpoint`, Schema);
const after = change.after.val();
await Model.deleteMany({code: Code});
await Model.create({after, ...{code:Code}});
});
我需要数据库名称,以便我可以在 Mongo 上保存到同名的数据库。
例如: 鉴于我有一个 firebase 项目 'My-Project' 并且我有多个实时数据库实例说: 'db1'、'db2'、'db3' 当触发器触发时,我想保存/更新/删除 MongoDB 数据库中的数据,以便它与我的 Firebase 实时数据库保持同步。
因此,不仅要获取存储在 db1 中的数据,还要获取名称“db1”,以便在 Mongo 中更改正确的数据,这一点至关重要.
请记住,更多的数据库将被添加到 My-Project 所以 在某个地方,它将是'db100。
【问题讨论】:
-
您是说在一个项目中有多个数据库分片,并且您想要所有这些分片的侦听器吗?或者您是说您有多个项目,并且您希望每个项目中的数据库都有侦听器?如果您编辑问题以通过示例说明您希望在函数中收到的数据,将会很有帮助。
-
我在一个项目中有多个数据库实例,这是一个多租户应用程序,每个租户都有自己的数据库。
标签: firebase firebase-realtime-database google-cloud-functions