【问题标题】:How to listen to multiple databases in google cloud functionsgoogle cloud函数中如何监听多个数据库
【发布时间】:2019-05-20 12:49:13
【问题描述】:

我想在我的谷歌云功能中收听两个数据库,所以我尝试了这个

 const app1 = admin.initializeApp({
   credential: admin.credential.cert(serviceAccount),
   databaseURL: "https://honey.firebaseio.com"
});

const app2 = admin.initializeApp({
   credential: admin.credential.cert(serviceAccount),
   databaseURL: "https://honey-d8.firebaseio.com/"
}, 'app2'); 




// Get the default database instance for an app1
var OperationDB = admin.database().ref();

// Get a database instance for app2
var userDB = admin.database(app2).ref();

然后我尝试调用第二个数据库

 exports.onBoardNewUser = functions.userDB.ref('/Users/').onCreate((snapshot, context) => {

 })

每当我尝试部署文件时都会出现此错误

无法读取未定义的属性“ref”

两个数据库在同一个项目中

我尝试了不同的变化,但没有运气。我做错了什么,我该如何解决这个问题?

【问题讨论】:

    标签: node.js firebase-realtime-database google-cloud-functions


    【解决方案1】:

    您不能将云函数附加到任意数据库引用。 Cloud Functions 数据库触发器与您通过客户端 SDK 获得的侦听器不同。它在生成事件时从实时数据库接收事件。

    您必须use the provided API 来构建一个引用特定数据库和路径的函数来接收更新。

    您不能在部署函数的项目之外引用数据库。

    您可以在同一个项目中引用数据库的多个分片。为此,您必须specify the name of the shard instance using the provided API。如果您没有使用 instance() 方法在函数构建器中命名实例,您将只会接收来自主/默认分片的事件。

    如果您想在每个分片的同一位置处理所有分片的事件,您必须为每个分片导出一个函数,并且每个分片都可以委托给同一个辅助函数来处理事件。

    【讨论】:

    • 两个数据库在同一个项目中
    • 然后使用我链接到的提供的 API 来接收来自您的两个实例的事件。 firebase.google.com/docs/functions/…
    • 它只适用于一个数据库。我发布的代码是我尝试初始化第二个数据库。我不确定我是否正在初始化它并正确调用它。 API 示例适用于一个数据库
    • 我给你的链接解释了如何使用多个分片。您将使用函数构建器上的 instance() 方法来指定分片的名称。 firebase.google.com/docs/functions/…
    猜你喜欢
    • 2012-09-19
    • 2019-08-05
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多