在 firebase 中,如何检测存在的值?
In firebase, how can I detect what value is existing?
我想创建的只是一个 'room-maker' 应用程序。
这只是一个应用程序,如果用户输入房间号并单击 "Join" 按钮,
创建新房间,用户前往房间(路线)。
在 Firebase 中,我想知道如何检测房间是否已经存在。
我想编写如下代码。
如果有房间,
console.log("The room is existing.");
如果没有,
console.log("You created new room!");
我的代码(部分)如下
//Firebase Set
var ref = new Firebase('https://blinding-inferno-7068.firebaseio.com/');
//Room set
$scope.roomNum = $stateParams.roomNum;
var roomsRef = ref.child('rooms');
var roomNumRef = roomsRef.child($scope.roomNum);
roomNumRef.set({roomNum:$scope.roomNum});
我完成了创建新房间的代码,但是如何检测房间是否已经存在?
如果我理解您的核心要求是:如果房间尚不存在,则当前用户创建它,其他人无法再创建该房间。
这对我来说就像一笔交易。
roomNumRef.transaction(function(current) {
if (!current) {
console.log('You created the room');
return {
creator: 'nujabes',
createdAt: Firebase.ServerValue.TIMESTAMP
}
}
else {
console.log('The room already existed');
}
});
使用房间节点的当前值调用事务处理程序。如果您 return 来自处理程序的值,该值将在房间节点上设置。如果你return什么都不做,房间节点将保持不变。
由于 Firebase 将 p运行e 个空节点,我们必须 return 一些值。在这种情况下,我将 creator
设置为硬编码值。但您可能想要确定实际用户。
请注意,只有当两个用户都使用此代码时,以上内容才能防止他们创建同一个房间。恶意用户可以轻松地 运行 他们自己的代码来攻击您的 Firebase 数据库,并且仍然声称其中的任何房间。为防止这种情况,您需要设置防止这种情况的安全规则。阅读此 documentation on Firebase security rules 了解如何操作。
我想创建的只是一个 'room-maker' 应用程序。
这只是一个应用程序,如果用户输入房间号并单击 "Join" 按钮,
创建新房间,用户前往房间(路线)。
在 Firebase 中,我想知道如何检测房间是否已经存在。
我想编写如下代码。
如果有房间,
console.log("The room is existing.");
如果没有,
console.log("You created new room!");
我的代码(部分)如下
//Firebase Set
var ref = new Firebase('https://blinding-inferno-7068.firebaseio.com/');
//Room set
$scope.roomNum = $stateParams.roomNum;
var roomsRef = ref.child('rooms');
var roomNumRef = roomsRef.child($scope.roomNum);
roomNumRef.set({roomNum:$scope.roomNum});
我完成了创建新房间的代码,但是如何检测房间是否已经存在?
如果我理解您的核心要求是:如果房间尚不存在,则当前用户创建它,其他人无法再创建该房间。
这对我来说就像一笔交易。
roomNumRef.transaction(function(current) {
if (!current) {
console.log('You created the room');
return {
creator: 'nujabes',
createdAt: Firebase.ServerValue.TIMESTAMP
}
}
else {
console.log('The room already existed');
}
});
使用房间节点的当前值调用事务处理程序。如果您 return 来自处理程序的值,该值将在房间节点上设置。如果你return什么都不做,房间节点将保持不变。
由于 Firebase 将 p运行e 个空节点,我们必须 return 一些值。在这种情况下,我将 creator
设置为硬编码值。但您可能想要确定实际用户。
请注意,只有当两个用户都使用此代码时,以上内容才能防止他们创建同一个房间。恶意用户可以轻松地 运行 他们自己的代码来攻击您的 Firebase 数据库,并且仍然声称其中的任何房间。为防止这种情况,您需要设置防止这种情况的安全规则。阅读此 documentation on Firebase security rules 了解如何操作。