如何在 Firebase 的子级中检查子级中的数据

2024-04-28

标题可能看起来有问题,但我正在尝试弄清楚如何做到这一点。我的数据结构如下所示:

我想看看每个频道中是否都有用户。这将检查是否有通道:

channelRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
for channelSnap in snapshot.children {
let channelData = (channelSnap as! FIRDataSnapshot).value as! Dictionary<String, AnyObject>
if let name = channelData["name"] as! String!, name.characters.count > 0 {
}
})

这当然会检查是否有一个孩子具有名为 name 的属性,如果是,则执行某些操作。我想要做的是循环遍历所有频道中的子级(频道)中的子级(频道中的用户)。我想检查该频道中是否有任何子频道,如果没有,请删除该频道。那么如何循环访问children通道中的children呢?我可以通过调用此函数来访问每个频道 ID:

让 id = (channelSnap as!FIRDataSnapshot).key

Edit:

这会打印出频道中没有用户:

channelRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
            for channelSnap in snapshot.children {
                for child in (channelSnap as AnyObject).children {
                    let usersData = (child as! FIRDataSnapshot).value as? Dictionary<String, AnyObject>
                    if let randomUser = usersData?["userID"] as! String!{
                        print("user in the channel")
                    }
                    else
                    {
                        print("no user in channel")
                    }
                }

Edit 2:

这是快照的打印,后面是通道快照的打印,当其中有一个用户时:

SNAPSHOT: Snap (channels) {
    "-KePh6YFmQqQ6ZhEfTHn" =     {
        "-KePh6YHPLSAIEARfj-i" =         {
            PictureVersion = 2;
            readyToGo = 0;
            userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
            username = pietje;
        };
        creator = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
        currentPlayers = 1;
        entryFee = 100;
        gameType = normal;
        maximumPlayers = 4;
        name = "random channel";
        password = "";
    };
}
CHANNELSNAP: Snap (-KePh6YFmQqQ6ZhEfTHn) {
    "-KePh6YHPLSAIEARfj-i" =     {
        PictureVersion = 2;
        readyToGo = 0;
        userID = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
        username = pietje;
    };
    creator = SZlQ76RLCJQpFa0CDhrgFJoYzrs2;
    currentPlayers = 1;
    entryFee = 100;
    gameType = normal;
    maximumPlayers = 4;
    name = "random channel";
    password = "";
}

Is the KeJTqVREbMEmtD0oAk4频道内的用户?如果是的话我想有钥匙就好了users您将在其中保存有关他们的所有信息......

在下图中,example键将对应于您的频道。在里面,你会有other_info,这将是有关该频道的信息。然后,有users,这将保留频道中的所有不同用户。

Then channelSnap.child("users").value将拥有该频道中的所有用户。

您可以检查是否有用户具有以下内容:

if let dict = channelSnap.child("users").value as? [String: Any] {
   if dict.count == 0 {
      // no users
   } else {
      // you got users
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Firebase 的子级中检查子级中的数据 的相关文章

随机推荐