2016-11-08 122 views
1

我有一個locations-orders表看起來像這樣的最新變化:火力地堡+斯威夫特:抓住唯一的一個子節點

enter image description here

我只想抓住被添加到該記錄的最新訂單(不是所有已經在其中的其他訂單)。這是我有,這是行不通的(我硬編碼的位置順序鍵):

static func observeOrders(lId: String, f: @escaping (AppState.Order) ->()) { 
    FIRDatabase.database().reference(withPath: "locations-orders/5P9TF215PZ3ZV") 
     .child("orders") 
     .queryEnding(atValue: nil) 
     .queryLimited(toLast: 1) 
     .observe(.childAdded, with: { firebaseSnapshot in 

     let orderObject = firebaseSnapshot.value as! [String: AnyObject] 

     print("orderObject") 
     print(orderObject) // <-------------------- only prints once, never prints again 


     let order = AppState.Order(
     title: orderObject["name"] as! String, 
     subtitle: orderObject["item_variation_name"] as! String, 
     createdAt: Date(timeIntervalSince1970: TimeInterval(orderObject["created_at"] as! Int/1000)), 
     name: "name", 
     status: AppState.Order.Status.Pending 
    ) 

     f(order) 
    }) 
    } 

我的查詢出了什麼問題?

回答

1

讓我們簡化。如果你想獲得最後添加的項目,然後添加任何新的項目,這個怎麼樣:

let ref = "your orders path" 
ref.queryLimited(toLast: 1) 
    .observe(.childAdded, with: { snapshot in 
    print(snapshot?.value) 
}) 
相關問題