用Swift 3.0查询Firebase
问题描述:
我试图获得createdAt
等于Today
的所有条目,但它不返回任何内容。用Swift 3.0查询Firebase
我在这里做错了什么?而且,以我想要做的方式查询数据的正确方法是什么?
JSON:
{
"thoughts" : {
"-KWGdcdZD8QJSLx6rSy8" : {
"createdAt" : "Tomorrow",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
},
"-KWGeGivZl0dH7Ca4kN3" : {
"createdAt" : "Today",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
},
"-KWGeIvWHBga0VQazmEH" : {
"createdAt" : "Yesterday",
"thought" : "meno",
"user" : "ET9tYfHqThNTsLG4bZGIbuLGauu2"
}
}
}
斯威夫特:
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)
}
})
答
您需要使用queryOrderedByChild
到createdAt
比使用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)
}
})
更新该行其他任何人有这个问题: 'let ref = db.queryOrdered(byChild:“createdAt”)。queryEqual(toValu e:“Today”)' –
@ColbyGatte我刚刚编辑了引用行...请你再试一次 –
嗨@ EICaptainv2.0,我实现了你的答案,但是我得到了所有的子节点。我使用的是.childAdded而不是.value,并且我得到了所有的子值,而不仅仅是匹配查询的那些值(我用Int时间戳命令,并且使用queryStarting(at :)。你可以摆脱。 – Septronic