2017-03-17 29 views
1

我在学习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,我们将如何过滤所有员工的待处理留言?

回答

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 

    }) 
相关问题