Firebase数据被覆盖!寻求指导



我正在用Firebase构建一个Angular应用程序。

我的意图是创建一个对象(说房间)在根与3个子对象(说Room1, Room2 &某市)。此外,我正在尝试创建一个逻辑来检查房间对象是否存在-它不会再次创建它。

我的代码是:
var ref = new Firebase(firebaseURL);
ref.child('Rooms').once('value', function (snapshot){
  if(snapshot.numChildren() == 0){
    // Create Room within a loop
    ref.child('Rooms').child(i).set(roomObj);
  }else if(snapshot.numChildren() > 0){
    // do not create
  }
}

但是当代码运行时-它总是进入if块!!并创建了儿童房间。

我在代码中的错误是什么??

最有可能的值事件将会用您期望的值再次触发。

你的解决方案是在事务中运行代码。

var ref = new Firebase(firebaseURL);
ref.child('Rooms').transaction(function (data){
  if(!data){
    var rooms = {};
    for (var roomNum=0; roomNum < 3; roomNum++) {
      rooms['room'+roomNum] = { name: 'Room '+roomNum };
    }
    return rooms
  }
}

所以如果房间还不存在,上面的代码会创建它们。如果它们已经存在,代码什么也不做(不返回值,不修改数据)。

请务必阅读transaction的Firebase文档

相关内容

  • 没有找到相关文章

最新更新