如何在谷歌云功能中监听多个数据库

时间:2018-12-20 01:06:14

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

我想在我的google cloud函数中收听两个数据库,所以我尝试了

let panGesture = UIPanGestureRecognizer(target: self, action:(#selector(self.handleGesture(_:))))
self.view.addGestureRecognizer(panGesture)

@objc func handleGesture(_ sender: UIPanGestureRecognizer) {

    switch sender.state {
    case .began:
    case .changed:
    case .cancelled:
    case .ended:
    default:
        break
    }
}

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

 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();

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

  

无法读取未定义的属性'ref'

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

我尝试了各种变化,但没有运气。我在做什么错,该如何解决?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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