2016-11-08 120 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) 
}) 
相关问题