我正在学习firebase并试图找到构建数据的最佳方法。
使用简单离开应用程序的示例。员工可以提交和查看他们的叶子。经理可以批准离职。
选项1
"leaves": [
{
"employee": "pCIUfttSrXQ1dLPDwH7j9GExCkA2",
"date": "2017-03-01",
"status": "pendingApproval",
},
{
"employee": "YSJCAe4wZdYCplA3e0ejMqzQmEF3",
"date": "2017-01-01",
"status": "approved"
}]
使用选项1,在两种情况下都需要过滤:
选项2
"leaves":
{
"pCIUfttSrXQ1dLPDwH7j9GExCkA2" : [
{
"date": "2017-03-01",
"status": "pendingApproval"
}
],
"YSJCAe4wZdYCplA3e0ejMqzQmEF3" : [
{
"date": "2017-01-01",
"status": "approved"
}
]
}
使用选项2,当员工列出其休假历史记录时,不需要过滤,但需要过滤(并且我不知道如何)管理员列出待处理的休假。
构建数据的正确方法是什么?如果它是选项2,我们如何过滤所有员工的待定叶片?
答案 0 :(得分:1)
使用第二个选项;
要让经理筛选待处理的查询,请使用:
FIRDatabase.database().reference().child("leaves").queryOrdered(byChild: "status").queryEqual(toValue: "pending").observeSingleEvent(of: .value, with: {(Snapshot) in
print(Snapshot.value!)
// If you have multiple pending request you gotta loop through them
// using for loop, access them as separate entity and operate on them
})