Firebase 数据被覆盖!寻求指导
Firebase data gets overwritten ! sought guidance
我正在使用 Firebase 构建一个 Angular 应用程序。
我的意图是在根目录下创建一个对象(比如 Rooms),其中包含 3 个子对象(比如 Room1、Room2 和 Room3)。此外,我正在尝试创建一个逻辑来检查 Rooms 对象是否存在 - 它不会再次创建它。
我的代码是:
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
}
}
所以如果房间还不存在,上面的代码会创建它们。如果它们已经存在,则代码不执行任何操作(不返回值,不修改数据)。
我正在使用 Firebase 构建一个 Angular 应用程序。
我的意图是在根目录下创建一个对象(比如 Rooms),其中包含 3 个子对象(比如 Room1、Room2 和 Room3)。此外,我正在尝试创建一个逻辑来检查 Rooms 对象是否存在 - 它不会再次创建它。
我的代码是:
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
}
}
所以如果房间还不存在,上面的代码会创建它们。如果它们已经存在,则代码不执行任何操作(不返回值,不修改数据)。