【问题标题】:How to read ONCE from firebase (without updating)如何从 firebase 读取 ONCE(不更新)
【发布时间】:2018-05-31 01:40:49
【问题描述】:

我有一个应用程序,它应该首先从 firebase 数据库中读取一个子节点,然后将其子节点的键存储在一个数组中。之后,我编写了将新值写入我在 firebase 中读取的同一个孩子的函数。

我希望 read 函数只读取一次,而不是像现在这样更新自身。我想得到第一个值而不是 writeFunction 写的。

前: 在我的火力基地: 电影{ 242:勇敢者游戏:欢迎来到丛林 342:“雷神:诸神黄昏” }

在我的代码中:

    func readOldMovieID(){
       ref = Database.database().reference()
    let userID = Auth.auth().currentUser?.uid
    ref?.child("users").child(userID!).child("Movie").observeSingleEvent(of: .childAdded, with: { (snapshot) in
         print("read Key:")
            print(snapshot.key)
                self.lastMovie.append(snapshot.key)

    }) { (error) in
        print(error.localizedDescription)
    }

我尝试了不同的代码来使这个函数读取一个!但我想我还是找不到合适的。

【问题讨论】:

  • observeSingleEvent(of: .value) 适合您吗?它只会读取一次并移除观察者。
  • 它不能正常工作。当 firebase 上的值更新时,lastMovie 数组正在更新。
  • 我在 viewLoad 上调用了 readFunction 一次
  • 我只是注意到在我的应用程序中,firebase 中可能不存在子电影,因此读取函数在写入函数后起作用。所以我要写一个条件,如果孩子不存在然后保持数组为空。
  • 为了在同一页面上,您尝试使用.value 而不是.childAdded 调用,对吗?

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

在读取之前检查孩子是否存在可以解决问题。 谢谢大家

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2023-01-16
    • 2019-09-16
    • 1970-01-01
    • 2020-10-28
    • 2019-12-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多