2016-11-11 22 views
5

Tôi đang cố gắng lấy tất cả các mục nhập trong đó createdAt bằng Today nhưng không trả lại gì.Truy vấn Firebase bằng Swift 3.0

Tôi đang làm gì sai ở đây? Và, cách thích hợp để truy vấn dữ liệu theo cách tôi đang cố gắng làm là gì?

JSON:

{ 
     "thoughts" : { 
     "-KWGdcdZD8QJSLx6rSy8" : { 
      "createdAt" : "Tomorrow", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     }, 
     "-KWGeGivZl0dH7Ca4kN3" : { 
      "createdAt" : "Today", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     }, 
     "-KWGeIvWHBga0VQazmEH" : { 
      "createdAt" : "Yesterday", 
      "thought" : "meno", 
      "user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2" 
     } 
     } 
    } 

Swift:

let db = FIRDatabase.database().reference().child("thoughts") 
    let ref = db.queryEqual(toValue: "Today", childKey: "createdAt") 

    ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in 
     for snap in snapshot.children { 
      print((snap as! FIRDataSnapshot).key) 
     } 
    }) 

Trả lời

8

Bạn cần phải sử dụng queryOrderedByChild-createdAt và vì sử dụng equalTo Today

let ref = FIRDatabase.database().reference().child("thoughts").queryOrdered(byChild: "createdAt").queryEqual(toValue : "Today") 

ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in 
    for snap in snapshot.children { 
     print((snap as! FIRDataSnapshot).key) 
    } 
}) 
+0

cập nhật dòng này cho bất cứ ai khác có vấn đề này: 'let ref = db.queryOrdered (byChild:" createdAt "). truy vấnEqual (toValu e: "Hôm nay") ' –

+0

@ColbyGatte Tôi chỉ chỉnh sửa dòng refrence ... bạn có thể vui lòng kiểm tra nó một lần nữa –

+0

Hi @ EICaptainv2.0, tôi đã thực hiện câu trả lời của bạn nhưng tôi nhận được tất cả các nút con. Tôi đang sử dụng .childAdded thay vì .value và tôi nhận được tất cả các giá trị con, không chỉ các giá trị con phù hợp với truy vấn (tôi sắp xếp theo dấu thời gian Int và sử dụng queryStarting (tại :). bạn có thể đổ. – Septronic

Các vấn đề liên quan