Firebase返回null作为第一个值

时间:2016-09-11 14:31:13

标签: ios firebase firebase-realtime-database

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

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

当我尝试在该节点上运行事务块来添加/更新某些东西时,Xcode打印出以下结果。由于这不能转换为字典代码失败。当我尝试从firebase导出我的数据时,没有空值。当使用数字ID时,我看到类似的问题,而这里并非如此。我无法弄清楚出了什么问题。 任何帮助表示赞赏...

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

1 个答案:

答案 0 :(得分:0)

如果您想将数据附加到此节点: -

 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"])