繁体   English   中英

Firebase 返回 null 作为第一个值

[英]Firebase returning null as first value

我对 Firebase 有点陌生。 我在我的一个小项目中使用它。 当用户注册并在其下添加其信息时,我在 db 上创建一个用户节点,其中 uid 是 object 的 id。 它看起来类似于以下内容。

users
    $uid
        email = "xyz@xyz.com"

当我尝试在该节点上运行事务块以添加/更新一些东西时,Xcode 打印出以下结果。 由于这不能转换为字典代码失败。 当我尝试从 firebase 导出我的数据时,没有 null 值。 当使用数字 ID 时,我看到了与此类似的问题,但这里不是这种情况。 我只是不知道出了什么问题。 任何帮助表示赞赏...

Optional(<null>)
Optional({
    email = "xyz@xyz.com";
})

如果要将数据附加到此节点,则:

 let dbRef = FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid)
  • 您可以通过将您的snapshot.value检索为NSMutableDictionary

     dbRef.child("email").observeSingleEventOfType(.Value, withBlock: {(list) in if let listDict = list.value as? NSMutableDictionary{ listDict.setObject(newValue, forKey: newKey) dbRef.setValue(listDict) } 

如果您想更新数据,则可以:-

  • 运行一个transactionBlock :-

      dbRef.child("email").runTransactionBlock({ (data: FIRMutableData) -> FIRTransactionResult in // Set value and report transaction success data.value = "newEmail@gm.com" return FIRTransactionResult.successWithValue(data) }) { (error, committed, snapshot) in if let error = error { print(error.localizedDescription) } } 
  • 更新值:-

      dbRef.updateChildValues(["email" : "newEmail@gm.com"]) 

这是我为解决问题所做的:

  1. 导出数据(JSON 格式)
  2. 删除 Firebase 实时数据库上的现有数据。
  3. 从导出的 JSON 数据中删除 null 值(并根据需要对其进行细化)。
  4. 将(精制)JSON 导入 Firebase DB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM