我有一个多人游戏。 2个玩家可以互相玩耍。用户创造了空间,没关系。但是,如果有2个或更多其他用户同时加入此房间,则会出现大问题。我试图在代码下面防止这种情况。
功能代码:
exports.sinirla = functions.database.ref('/AllUsers/{id}')
.onWrite(event => {
const orginalValue = event.data.numChildren();
if (orginalValue == 2) {
return event.data.ref.child('userCount').set(1);
} else if (orginalValue == 3) {
return event.data.ref.child('userCount').set(2);
} else {
return
}
});
Firebase树:
最后加入游戏代码:
userFirstLoginRef
.child("AllUsers")
.queryOrdered(byChild: "userCount")
.queryEqual(toValue: 1)
.observeSingleEvent(of: .value, with: { (snapp) in
if(snapp.exists()){
let odaAdi = snapp.children.allObjects[0] as! DataSnapshot
let snappKeyName = odaAdi.key
self.userFirstLoginRef
.child("AllUsers")
.child(snappKeyName)
.child(self.oyuncuID)
.setValue(["ID":self.oyuncuID,"point":100])
} else {
self.createRoom()
}
}) { (error) in
print(error)
}
用户只有在会议室" usercount"值为1. Firebase功能代码将更新" usercount"当用户加入创建的房间时,值为2。但是,如果有2个或更多用户同时点击加入,则所有用户都可以加入同一个会议室。所以我想限制房间容量是2. Firebase云功能可以阻止这种情况吗?