2016-11-21 17 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

相關問題