Firebase交易

时间:2014-11-04 06:50:03

标签: firebase angularfire

我的问题:

用户可以创建一个新组,该组将具有增量ID。

我想要增量ID而不是推送ID,因为我希望ID可以在之后使用(例如,用户可以通过输入组ID来搜索组)。所以我使用事务来执行此操作。我写了一些代码并且它运行良好(感谢stackoverflow!)

当我自己测试但我不确定碰撞发生时是否正确。请看看。

 var setGroupNumber = function() {
      //increment the number by 1 
      return $firebase(groupRef.child('info').child('groupNumber'))
        .$transaction(function(number) {
          if (!number) return 1;
          if (number < 0) return;
          return number + 1
        });
    }
var create = function(user_id, photoStr, name) {
  setGroupNumber().then(function(snapshot) {
    if (!snapshot) {
      console.log('transcation is aborted');
    }
    var group_id = snapshot.val() + 1000;

    $firebase(groupRef.child('group').child(group_id))
      .$set({
        photoURL: photoStr,
        group_id: group_id,
        user_id: user_id,
        name: name,
        members: {},
        created_time: Firebase.ServerValue.TIMESTAMP,
      })
      .then(function() {
        $firebase(groupRef.child('group').child(group_id).child('members').child(user_id)).$set(true);
      })
  })
}

它现在为我工作,但我有两个问题。

  1. 这是一种正确的方法吗(即组ID不会重复)?

  2. 在我的代码中,我在setGroupNumber之后做了很多事情(比如更新用户的数据库等,这里没有显示),这是否意味着想要创建组的其他用户将会等到所有这些都完成了?

  3. 感谢您的时间:)

0 个答案:

没有答案