限制使用Firebase功能加入儿童

时间:2017-08-21 21:12:30

标签: swift firebase firebase-realtime-database firebase-security

我有一个多人游戏。 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树:

User A Create room and waiting for player now

最后加入游戏代码:

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云功能可以阻止这种情况吗?

0 个答案:

没有答案