Javascript Firebase数据被覆盖!寻求指导
我正在用Firebase构建一个Angular应用程序 我的意图是创建一个对象,比如根位置的Rooms,它有3个子对象,比如Room1、Room2和Room3。另外,我正在尝试创建一个逻辑来检查房间对象是否在那里——它不会再次创建它 我的代码是:Javascript Firebase数据被覆盖!寻求指导,javascript,firebase,angularfire,Javascript,Firebase,Angularfire,我正在用Firebase构建一个Angular应用程序 我的意图是创建一个对象,比如根位置的Rooms,它有3个子对象,比如Room1、Room2和Room3。另外,我正在尝试创建一个逻辑来检查房间对象是否在那里——它不会再次创建它 我的代码是: var ref = new Firebase(firebaseURL); ref.child('Rooms').once('value', function (snapshot){ if(snapshot.numChildren() == 0){
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
}
}
因此,如果房间还不存在,上面的代码将创建它们。如果它们已经存在,则代码不返回值,不修改数据
一定要读这本书