我正在尝试创建一个始终与我的Firebase数据库建立连接的服务器,以监视更改,然后执行一项功能(在我的情况下,发送推送通知)。这个问题涉及如何保持开放的连接。
如果可能的话,我想将Python用于我的服务器。看起来这里有一个很好的Firebase包装器:https://github.com/ozgur/python-firebase
我现在可以轻松查询我的数据库以返回信息,但似乎没有关于如何持续观察更改的任何文档。
我该怎么做?
答案 0 :(得分:2)
似乎这个Python包装器使用REST API。在这种情况下,不能使用将观察者附加到接受实时回调函数的数据的核心Firebase功能。
实际上,我现在正在研究类似的脚本。就我而言,我想观察我们存储在Firebase数据库中的日志。经过一些研究后,我决定使用nodejs将观察者附加到Firebase数据,并将任何新的即将发布的数据写入我以后可以处理的外部文件中(是的,我也更喜欢Python,所以这就是我只使用的原因) nodejs从数据库中获取数据)。
以下是我脚本的摘录:
var ref = new Firebase("https://example.firebaseio.com");
var logsRef = new Firebase("https://example.firebaseio.com/logs");
var authToFirebase = function(loggedCallback) {
ref.authWithPassword({
email: "user@example.com",
password : "password"
}, function(error, authData) {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with uid " + authData.uid);
loggedCallback();
}
})
}
authToFirebase(function() {
//attaching child_added observer to logs
logsRef.on("child_added", function(snap) {
}, function(errorObject) {
console.log("The read failed: " + errorObject);
});
});
你可以看到它很简单。请注意,首先我登录到现有帐户,因为我想要观察的数据不会通过Firebase规则机制提供给未经授权的用户。
我在这里使用“child_added”活动,但您可能想要根据需要调整您想要观察的活动类型。