是否可以在 Firebase 的 ng-click 中使用多个 $add

Is it ok to use multiple $add within a ng-click in Firebase

我已经能够在这段代码中获得我正在寻找的行为,但我只是想确保我正朝着正确的方向前进。我也阅读了很多有关事件侦听器的内容,但无法弄清楚如何实现它,所以我想知道我的代码是否同样好、更好或更差。

为我服务:

.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-click 上将文本和用户名添加到两个子节点。如果我想将它添加到更多的子节点,比如 profile 和其他任何可能的节点,我可以继续放入引用不同节点的 $add 吗?或者这是不好的做法?提前谢谢你。

将相同的信息添加到 Firebase 数据库中的多个位置称为扇出,这是一种常见的做法。因此,虽然这取决于您的确切需求,但从定义上讲,复制数据并不是坏事。看到这个 blog post about denormalization on the Firebase site.

您可能要考虑使用单个多位置 update() 语句而不是两个单独的 $add() 调用。请参阅此问题的示例:Firebase: How do I update multiple resources atomically? and this blog post on the Firebase web site.