【问题标题】:How do I link each user to their data in Firebase for Swift 3?如何将每个用户链接到他们在 Firebase for Swift 3 中的数据?
【发布时间】:2017-07-25 16:36:46
【问题描述】:

我创建了一个与 Firebase 集成的项目。它具有注册和登录功能。我有个人信息表格要为个人用户填写。但是当用户不同时,会显示所有用户的所有数据。我需要显示与链接用户相关的信息。该人应该只能访问他/她的数据库。我在 Swift 3 中找不到合适的解决方案。

【问题讨论】:

  • 您遇到的问题在哪里?代码太长了
  • 我已经在我的问题中写下了我的问题。项目没有错误,但每个用户创建的数据库都被所有人访问。用户的个人信息应该由他/她自己而不是所有用户访问。数据库应链接到个人用户。你现在得到问题了吗? @Saurabh 耆那教
  • 哇 - 有很多代码需要查看。您是否有理由不使用将用户数据存储在 /users 节点中的典型设计模式,然后引用该用户在同一节点中链接用户?请参阅this question 的答案。你甚至可以反过来做,并在他们的节点中存储用户链接到哪些用户——这将使查询变得轻而易举。
  • @Tamannah 请查看 Jay 链接
  • 这不是我的问题。我只需要将用户与他/她的数据库链接,而不是所有关于所有用户信息的数据库。拜托,我是 swift 新手。帮我解决这个问题。我已经编写了所有代码,认为有人会要求编写所有代码以了解全部工作。 @Saurabh Jain @Jay

标签: ios firebase swift3 firebase-realtime-database


【解决方案1】:

据我所知,您似乎没有在数据库中引用正确的节点。您正在查看所有用户数据,因为您的变量 messageRef 指向 /users。如果您希望用户只看到他们的数据,那么您需要组织您的数据,以便当您保存位于/users/{user_id}messageItem 时。然后通过首先获取 user_id 并从它的新位置 (/users/{user_id}) 读取它来正确访问它。

所以我会改变这些行:

override func viewDidLoad() {
    super.viewDidLoad()

       messageRef = databaseRef.child("Users")

    // Do any additional setup after loading the view.
}

到这里:

override func viewDidLoad() {
    super.viewDidLoad()
       guard let user = Auth.auth().currentUser else { return }
       messageRef = databaseRef.child("Users/\(user.uid)")
    // Do any additional setup after loading the view.
}

【讨论】:

  • 它显示错误为:由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ setValue:forUndefinedKey:]:此类不符合键值编码键-KpxBRAArXyFC9EXGF0t。但是当我在数据库上看到时,数据库与其数据相关联。所以现在问题出在xcode上。帮我解决这个问题? @道格
  • 问题是在从 Firebase 获取表视图上的数据时可能在 Donate 上。
  • 我解决了。我从你的回答中得到了提示,所以你应该得到投票和正确的答案。谢谢!!
  • 感谢您传递良好的 stackoverflow 业力。您也可以考虑编辑我的答案以反映您确实出错的地方,以便将来遇到相同问题的任何人都可以在这里找到更完整的答案。干杯!
猜你喜欢
  • 2015-09-03
  • 2019-01-14
  • 2021-07-17
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
相关资源
最近更新 更多