迅捷的4 Firebase数据库-即使有数据存在,.value的ObserveSingleEvent返回Null

时间:2018-07-12 20:16:28

标签: ios swift firebase firebase-realtime-database swift4

我确实发现了几次重复的帖子,但是似乎没有答案适用于我的情况。

我正在运行以下代码:

    let dbRef = Database.database().reference()
    guard let myUser = Auth.auth().currentUser else { return }

    print("Statistics:  initializeStatistics:  dbRef object", dbRef.description())

    userRef = dbRef.child("users").child(myUser.uid)
    appStatsRef = dbRef.child("Stats/AppStats").child(myUser.uid)
    globalStatsRef = dbRef.child("Stats/GlobalStats").child(myUser.uid)
    locationStatsRef = dbRef.child("Stats/LocationStats")

    if let appRef = appStatsRef {
        print("Statistics:  initializeStatistics:  Setting Up Single Event observation. Ref=",appRef.description())

        appRef.observeSingleEvent(of: .value, with: { (snapshot) in
            print("Statistics: SingleObservation from:  Ref: ", appRef)
            print("Statistics: SingleObservation:  Initial State of AppStats: ", snapshot)
            }) {
                (error) in
                print("Statistics: SingleObservation:  Error: ",error.localizedDescription)
        }

我看到的日志消息是:

Statistics:  initializeStatistics:   UserId:  zo9KcrXXXXXXXmSv8Cc8W2XeCb2
Statistics:  initializeStatistics:  dbRef object https://bxxxxxxx-30999.firebaseio.com
Statistics:  initializeStatistics:  Setting Up Single Event observation. Ref= https://bxxxxxxx-30999.firebaseio.com/Stats/AppStats/zo9KcrXXXXXXXmSv8Cc8W2XeCb2
Statistics: SingleObservation from:  Ref:  https://bxxxxxxx-30999.firebaseio.com/Stats/AppStats/zo9KcrXXXXXXRXmSv8Cc8W2XeCb2
Statistics: SingleObservation:  Initial State of AppStats:  Snap (zo9KcrXXXXXXXmSv8Cc8W2XeCb2) <null>

在Firebase数据库中,我具有以下结构和数据:

{
  "Stats" : {
    "AppStats" : {
      "zo9KcrXXXXXXXmSv8Cc8W2XeCb2" : {
        "ctime" : 1.531419079915515E9,
        "dateFirstTaggedTicket" : 1.531419079470825E12,
        "dateLastTaggedTicket" : 1.531419079470825E12,
        "disabledHotballSupport" : false,
        "firstGamePlayed" : 0,
        "gamesCompleted" : 0,
        "gamesContinuedAfterWin" : 0,
        "gamesPlayed" : 0,
        "gamesPlayedWithoutATaggedTicket" : 0,
        "gamesStarted" : 0,
        "lastAppLogin" : 1.531419079470824E12,
        "lastGamePlayed" : 0,
        "uid" : "zo9KcrXXXXXXXmSv8Cc8W2XeCb2"
      }
    }
  }
}

如果我将查询更改为Observe查询而不是ObserveSingleEvent,然后使用“ updateChildValues”将单个值写入数据库,则观察关闭日志消息将在日志中显示两次。第一次(在写之前),我的快照.value为空,第二次(在UpdateChildValues发布之后),snapshot.value包含所有正确的数据。

有人可以帮助我理解为什么我看到Null值或指出我做错了什么吗?我要做的就是一次从密钥中检索信息,以便可以初始化一些本地对象。我是Swift和Firebase的新手,所以完全有可能-甚至有可能-我误解了一些非常基本的知识。预先感谢。

0 个答案:

没有答案