2016-03-08 19 views
1

我已經能夠獲得我在此代碼中尋找的行爲,但我只是想確保我正朝着正確的方向前進。我已經閱讀了很多關於事件監聽器的知識,但是無法弄清楚如何實現,所以我想知道我的代碼是否可以同樣好,更好或更差。

在我的服務:

.factory('Messages', function($firebaseArray, FBURL, $window) { 
    var messagesRef = new $window.Firebase(FBURL + '/messages'); 
    return $firebaseArray(messagesRef); 
}) 

.factory('Chatroom', function($firebaseArray, FBURL, $window) { 
    var chatroomRef = new $window.Firebase(FBURL + '/chatroom'); 
    return $firebaseArray(chatroomRef); 
}) 

然後在我的控制器:

$scope.messages = Messages; 
    $scope.chatroom = Chatroom; 

    $scope.addMessage = function(message) { 
    $scope.messages.$add({ 
     text: message.text, 
     userName: message.userName 
    }); 
     $scope.chatroom.$add({ 
     text: message.text, 
     userName: message.userName, 
    }); 
    message.text=""; 
    } 

所以現在我加入了文本和用戶名的NG-點擊兩個子節點。如果我想把它添加到更多的子節點,如配置文件和其他任何可能,我可以繼續放入$ add引用不同的節點,或者是不好的做法?先謝謝你。

回答

1

將相同的信息添加到Firebase數據庫中的多個位置稱爲扇出,這是常見做法。因此,儘管這取決於您的確切需求,但複製數據的定義並不明確。看到這個blog post about denormalization on the Firebase site

您可能需要考慮使用單個多地址update()語句而不是兩個單獨的$add()調用。請參閱此問題的示例:Firebase: How do I update multiple resources atomically?this blog post on the Firebase web site

+0

再次感謝您的答覆弗蘭克!我會檢查你列出的資源,看看我是否可以更新我的代碼。謝謝。 –

+0

它花了一些試驗和錯誤,但我終於能夠實現多位置更新()和哇,它有什麼不同。再次感謝您提供的資源,因爲它們幫助我解決了一系列的問題。 –

+0

嘿,弗蘭克你好像在通過關於堆棧溢出的不同firebase問題來看Firebase的所有好的答案。我提出了另一個問題,我現在被困住了,所以如果你有機會,我會非常感謝你對這個主題的見解。再次感謝! –

相關問題