我需要条件代码才能从Firebase读取数据。我希望条件像在SQL" WHERE project =' test'"。我用Swift写的。
我有从Firebase读取数据的代码:
var ref:FIRDatabaseReference?
var databaseHandle:FIRDatabaseHandle?
var tasks = [Task]()
var uid = (FIRAuth.auth()?.currentUser?.uid)! as String
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference().child("\(uid)/Tasks")
startObservetingDB()
}
func startObservetingDB() {
ref?.observe(.value, with: { (snapshot:FIRDataSnapshot) in
var newSweets = [Task]()
for sweet in snapshot.children {
let sweetObject = Task(snapshot: sweet as! FIRDataSnapshot)
newSweets.append(sweetObject)
}
self.tasks = newSweets
self.tableView.reloadData()
}) { (error:Error) -> Void in
print(error.localizedDescription)
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TasksCell", for: indexPath) as! TasksCell
let arrayTasks = tasks[indexPath.row]
cell.taskName.text = arrayTasks.content
return cell
}
我有这个Firebase结构:
有人可以帮我吗?
答案 0 :(得分:0)
您可以使用以下命令获取特定项目的任务:
ref?.queryOrdered(byChild: "project").queryEqual(toValue: "test").observe(.childAdded
但您可能还想考虑您的数据结构是否适合您的使用。您最常(甚至可能总是?)似乎会显示特定项目的任务。在这种情况下,将数据存储在该结构中会更有效:
ProjectTasks
$ProjectId (e.g. "test")
$TaskId ("asd asd se")
顺便说一句:这个答案似乎高度相关:query & where in Firebase (swift 3)