swift firebase查询使用currentUser?.uid返回null

时间:2018-03-11 16:04:16

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

let userID  = Auth.auth().currentUser?.uid
ref.child("players").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in

    let value = snapshot.value as! NSDictionary
    print("DICT VALUE",value)
})

我试图获取已登录用户的个人资料。我的问题是,如果使用变量userID let userID = Auth.auth().currentUser?.uid 快照为空。返回此Snap (feoMdSquBSMHFXcPhZKbpsIGlKe2) <null> 如果我对userID子项使用文字字符串let userID = "feomdsqubsmhfxcphzkbpsiglke2",我会得到预期的回报

Snap (feomdsqubsmhfxcphzkbpsiglke2) {
    currentSelected = 0;
    email = "2@yahoo.com";
    uid = feoMdSquBSMHFXcPhZKbpsIGlKe2;
    username = "player 2";
}

我可以确认userID有效

let userID  = Auth.auth().currentUser?.uid
print(userID!)

返回feoMdSquBSMHFXcPhZKbpsIGlKe2

这里是存储的数据

{
  "players" : {
    "feomdsqubsmhfxcphzkbpsiglke2" : {
      "currentSelected" : false,
      "email" : "2@yahoo.com",
      "uid" : "feoMdSquBSMHFXcPhZKbpsIGlKe2",
      "username" : "player 2"
    },
    "o4azcazrxjqc3toybykk0ghbd9o2" : {
      "currentSelected" : false,
      "email" : "1@yahoo.cm",
      "uid" : "O4aZCAZrXJQc3TOYbykK0ghbD9O2",
      "username" : "player 1"
    }
  }
}

1 个答案:

答案 0 :(得分:2)

如果我没记错,Firebase数据库密钥区分大小写。在您的数据库中,您的用户ID是:

feomdsqubsmhfxcphzkbpsiglke2

但是,您登录的任何用户的实际用户ID是:

feoMdSquBSMHFXcPhZKbpsIGlKe2

试试这个:

let userID = feoMdSquBSMHFXcPhZKbpsIGlKe2
ref.child("players").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
    let value = snapshot.value as! NSDictionary
    print("DICT VALUE",value)
})

看看它给你的东西。如果它不起作用,你知道你必须观察所有角色的情况。