2016-11-21 25 views
2

我正在使用Firebase创建一个Web应用程序。如果需要,该应用程序的客户端会与我自己的NodeJS服务器通信,而该服务器又会与Firebase应用程序进行通信。我可以在客户端和Firebase之间使用自己的NodeJS服务器,并仍然使用诸如“on()”之类的方法吗?

Firebase提供了一些很酷的功能,例如on()函数,该函数在Firebase中的数据被修改时自动更新。

有什么办法让我在我的NodeJS应用程序中使用它,以便我的服务器将更新传递给客户端,而客户端不必直接连接到Firebase?

我试过包括一个on这样的函数,但是当数据更新和服务器崩溃时我得到一个错误。显然,如果没有明确的请求,Node不能发送另一个响应。有小费吗?

app.get('/project/save', function(req, res) { 
    var result = firebase_admin.database().ref().on('value', function(d){ 
     console.log(d.val()); 
     return res.status(200).json(d.val()); 
    }); 
}); 
+0

可能的重复[是否使用Firebase作为AngularJS和NodeJS之间的中介'坏'主意?](http://stackoverflow.com/questions/26311838/is-using-firebase-as-the-intermediary-between -angularjs-and-nodejs-a-bad-idea) – imjared

+0

您可以使用websockets在您的应用和客户端之间建立持久连接,但是您复制了Firebase中已存在的功能。 – imjared

回答

1

您绝对可以在您的用户和Firebase数据库之间放置自己的node.js服务器。但通过这样做,您将扮演应用服务器的角色。这意味着您还必须为Firebase功能提供您自己的实施/代理,例如on()方法。

链接答案中的方法更容易,让您获得大部分相同的好处。它也记录了this documentation

Firebase sits between app and back-end

所以这里既有用户和后端代码(在这种情况下,在App Engine灵活的环境中运行,但它可以在任何受信任的环境中运行)本质上是客户用于Firebase数据库。

我们最近在Firebase Dev Summit上发表了一个演讲,我们也介绍了这种方法:Develop mobile apps without infrastructure

相关问题