【问题标题】:Grouping items by attribute with AngularFire使用 AngularFire 按属性对项目进行分组
【发布时间】:2014-10-01 19:08:37
【问题描述】:

我正在编写一个小型库存应用程序,使用 Angular 和 Firebase 作为后端来管理深冰柜的库存(东西可能永远丢失在那里!),我很难找到一个好的 JSON 结构。数据是冰箱中物品的列表,每个物品都有描述、尺寸、有效期和添加(到库存)日期。

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

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

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

但是,在应用程序的其他地方,项目需要按类型分组在一起。在这种情况下,类型意味着具有相同描述和尺寸的物品(例如,西兰花,16 盎司)。当项目按类型分组时,它们将具有与之关联的数量属性,我也需要显示该属性。我还需要访问一组相关的到期日期和每种类型的添加日期。例如,可能有 3 个 16 盎司的西兰花,它们都有不同的有效期和添加日期。

问题是如何在保持数据同步到服务器的同时做到这一点。如果我的 JSON 结构只是一个项目数组,我需要将它们“收集”为第二种显示样式的类型。如果结构基于具有添加和关联到期日期数组的项目类型,那么我需要将它们“解包”为第一个显示样式的单个项目。

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

【问题讨论】:

  • 这个问题很容易保证一本书的几个章节。你能选择一个你想解决的特定用例吗?我们可以在一个页面中回答什么?就目前而言,问题是,我如何为整个应用程序构建数据和编写代码?另外,包括一些代码供我们检查。

标签: angularjs firebase angularfire


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2021-11-14
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多