Swift , Firebase .检查用户 childs 值是否存在

标签: Swift
发布时间: 2017/3/6 22:59:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

在我的游戏,必须先登录,然后你要选择一个团队名称,获取存储在我 firebase 数据库,根据球员的 UID,和当玩家进入了他的团队的名字,我想是否它已被使用,或播放机是好去检查。

let rootRef = FIRDatabase.database().reference()
rootRef.queryOrderedByChild("teamName").queryEqualToValue("Bob fc").observeEventType(.Value, withBlock: { snapshot in

    if (snapshot.value is NSNull) {
        print("Name is not in use")
    } else {
        print("Name is in use")
    }   
})

我的数据树︰

{
    "users" : {
        "pbXvXYOKmJQqwSQZ9IlBykG7x1P2" : {
             "teamName" : "Bob fc"
        }
    }
}

我的数据库的规则︰

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

问题是它不打印任何东西,在做什么在这里错了吗?

解决方法 1:

你正在查询你根 ref。相反你应该查询 /users 节点

let rootRef = FIRDatabase.database().reference()
let usersRef = rootRef.childByAppendingPath("users")
usersRef.queryOrderedBy....

你可以缩短,但为了清晰起见,我使用的详细模型。

作为边注,与 Firebase 3.x,默认设置为只允许已通过身份验证的用户读取和写入。这被通过实时数据库部分中的规则。

如果你想要测试您的代码而无需进行身份验证,更改您的规则为这

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

请注意︰ 打开您的数据,任何人想要阅读它,但如果你只正在学习或测试应用程序使它有点更方便了。

官方微信
官方QQ群
31647020