如何快速从 firebase 获取用户的特定数据?

Posted

技术标签:

【中文标题】如何快速从 firebase 获取用户的特定数据?【英文标题】:how can i get a specific data for a user from firebase in swift? 【发布时间】:2019-07-25 12:45:19 【问题描述】:

我正在尝试创建一个用户信息数据库并通过对每个用户使用 firebase 来观察它们。我认为创建部分很顺利,但是当我调用observeSingleEvent 并打印快照值时,它说快照为空。你们能帮我解决这个问题吗?

这是我的 firebase 数据库控制台显示的内容;

>sinav-be280
>>member
>>>'SffbOC1UoYcmfBNCrjn2aOhFM4F2'
>>>>mail: "1@1.com"

>>>>name: "1"

>>>>password: "123123"

>>>>phone: "1"

这是我的代码

func createUserIfno() 
  let userInfoDB = ref.child("member")

  let userDictionary = [
    "name": self.nameTextView.text!,
    "phone": self.phoneNumberTextField.text!,
    "mail": Auth.auth().currentUser ? .email!,
    "password" : self.passwordTextField.text!,
  ]
  userInfoDB.child(userID!).setValue(userDictionary) 
    (error, reference) in

    if error != nil 
      print(error!)
     else 
      print("info saved")
    
  


func printUserInfo() 
  let userInfoDB = ref.child("member").child(userID!)
  userInfoDB.keepSynced(true)
  userInfoDB.observeSingleEvent( of: .value, with: 
    (snapshot) in
    if !snapshot.exists() 

      print("snapshot does exist")
      print(snapshot)
      return
    
  )

它说;

snapshot does exist
Snap (1jMpyCCbt0crfUdINnlSupRdcqk1) <null>

我什至不知道1jMpyCCbt0crfUdINnlSupRdcqk1 id 是什么。

【问题讨论】:

你什么时候打电话给printUserInfo() 在viewDidLoad中 (snapshot , error) in and print error 看看它的实际含义 【参考方案1】:

实际上,我稍微玩了一下代码并解决了问题。

在我的应用程序中,我编写了用于创建用户和分别创建数据库的代码,因此在 firebase 中,不知何故,第一个用户 ID 进入第二个用户的信息列表,第二个进入第三个。所以我在 createUser 函数中调用了我的 createUserInfo 函数并解决了问题。

【讨论】:

以上是关于如何快速从 firebase 获取用户的特定数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 firebase 获取特定文档数据并以字符串形式返回

如何从所有用户 ID (UID) 中获取特定值并保存在 RecyclerView Firebase UI

试图快速从firebase数据库中获取用户

如何从 Firebase android kotlin 获取所有具有特定价值的孩子?

如何从 Firebase 数据库中获取特定数据

如何从 OnMarkerClickListener 内的 Firebase 数据库中获取特定值?