使用AngularFire按属性对项目进行分组

时间:2014-10-01 19:08:38

标签: angularjs firebase angularfire

我正在编写一个小型库存应用程序,使用Angular和Firebase作为管理深度冷冻库存的后端(东西可能永远丢失!),我很难找到好的JSON结构。数据是冰箱中的项目列表,每个项目都有描述,测量,到期日期和添加(到库存)日期。

我正在使用优秀的AngularFire库,它允许我将项目数组直接绑定到作用域,同时保持数组与Firebase同步。在我的控制器中:

var fireRef = new Firebase('https://frozenapp.firebaseio.com/items/');
var sync = $firebase(fireRef);
$scope.items = sync.$asArray();

在应用的某些位置,需要单独列出项目。这样,我可以根据到期日期过滤它们(例如已经过期的项目或即将过期的项目)。

但是,在应用的其他位置,项目需要按类型分组。在这种情况下的类型将意味着具有相同描述和测量的项目(例如Broccoli,16oz)。当项目按类型分组时,它们将具有与我们相关联的数量属性,我也需要显示它们。我还需要访问每个类型的相关过期和添加日期的集合。例如,可能有三种西兰花,16盎司的物品,它们都有不同的过期和添加日期。

问题是如何在保持数据同步到服务器的同时执行此操作。如果我的JSON结构只是一个项目数组,我需要"收集"它们分为第二种显示风格的类型。如果结构基于具有添加和关联到期日期数组的项类型,那么我需要"解包"它们成为第一种展示风格的单独物品。

以下是我提出的几种不同可能的JSON结构:http://plnkr.co/edit/PeqZH8Va86kz1c2fULPS

1 个答案:

答案 0 :(得分:0)

如果您的插件中的所有不同可能性都是对您的应用有用的场景,那么您对数据组织的回答是:使用所有这些。

首先阅读denormalizing data in Firebase。如果您来自关系数据库背景,那么在Firebase中“复制”您的数据可能会有点违反直觉。实际上,在客户端代码中维护这些“重复”数据结构可能会感到完全错误。但没关系。 :)

此外,新的query methods可能对您的情况有所帮助。