【问题标题】:Unable to write data to Firebase real-time database with Swift 4无法使用 Swift 4 将数据写入 Firebase 实时数据库
【发布时间】:2018-01-28 11:04:01
【问题描述】:

我已经在我的可可豆荚中安装了 Firebase/Database,在我的 AppDelegate 中对其进行了配置,导入了我的 Google plist,将读写权限设置为 true,并在 viewDidLoad() 中写道

let rootRef = Database.database().reference()
rootRef.child("users").setValue(["name": "Ryan"])

rootRef.child("users").observe(.value) { (snapshot) in
    print(snapshot)
}

问题是,它会打印出

Snap (users) {
    username = Ryan;
}

但是,我没有看到我的实时数据库中的变化,所以如果我摆脱了

rootRef.child("users").setValue(["name": "Ryan"])

然后重新运行程序,没有任何结果。

在我的数据库中,如果我在我的根目录下添加一个键值对,比如 "Yo": "hey"

并使用

进行观察事件
rootRef.child("yo").observe(.value) { (snapshot) in
    print(snapshot)
}

什么都没有了

我很确定我的 firebase 服务已连接,因为我的用户身份验证有效,但我的数据库没有。谁能帮帮我!

【问题讨论】:

  • 这个rootRef.child("users").setValue(["name": "Ryan"]) 没有被添加到数据库中?
  • 显然是的。我不知道为什么。我在数据库中看不到它,即使刷新后,如果我立即打印出rootRef.child("users").observe(.value) { (snapshot) in print(snapshot) },那么我可以看到这些值,但是如果我删除该行并重新运行程序,我看不到任何结果。
  • 最可能的原因是您没有从数据库中读取的权限。

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

因为它不是孩子。

["yo":"hey"] 是一个字典数据结构。 代码:

rootRef.child("loginwithgooddesignpractice").observe(.value) { (snapshot) in
    print(snapshot)
}

【讨论】:

    【解决方案2】:

    您可能遇到的问题可能源于对 Firebase 数据库结构的理解。在您的情况下,根被很好地引用,但是从那里它没有被很好地组织。要创建一个 root/users/id/yo:"hey" 结构,我建议将其写为:

       rootRef.child("users").childByAutoId().setValue("hey", forKey: "yo")
    

    这种方式将用户作为一个字典,它将保存其他用户的多个唯一 ID,这是另一个保存值 yo:"hey" 的字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多