【问题标题】:How to structure this Firebase data如何构建此 Firebase 数据
【发布时间】:2015-10-22 11:09:02
【问题描述】:

我正在开发一款跟踪银行交易并以多种方式显示数据的应用。每个交易对象只有几条信息(日期、金额、类型),但会有数百笔交易。

目前我有 2 个这样的主要节点 -

transactions
   user_id
      transaction_id
         date:
         amount:
         type:
categories
   user_id
      category_id
         transaction_id
            date:
            amount:
            type:

(需要访问分类节点中的交易数据的原因也是为了进行分类分析)

所以我将每个事务对象存储了两次,我想知道这是否是最好的方法。因为我还想创建另一个按月组织交易的节点,所以像 -

months
   user_id
      January
         transaction_id
            date:
            amount:
            type:

我研究了如何为双向关系构建数据,但示例 here 不适用于此场景,因为我需要访问每个节点的完整交易数据

【问题讨论】:

    标签: firebase


    【解决方案1】:

    我认为您可能需要引用节点 ID,并将节点 ID 添加到您的第二个结构中。

        Firebase *reference = [firebase1 childByAutoId];
        NSString* nodeId = reference.key;
    

    这将允许您检索 nodeId,并且您可以在您的第二个数据结构中引用它。

    【讨论】:

    • 谢谢,能否请您发送有关使用参考的 Firebase 文档的链接?我似乎找不到任何东西
    • 从这个意义上说,它实际上不是一个“引用”——我相信他的回答意味着引用节点的字符串名称来获取数据。 childByAutoId 在 firebase1 中创建一个“随机”节点名称。实际名称,作为一个字符串,可以通过 key 属性 (reference.key) 找到,它看起来像 -Jajski88y3438j。 Firebase 中的数据复制很好,但在这种情况下可能不需要复制,可以通过利用类别和月份节点中的 transaction_id 从 user_id 节点获取您需要的数据来避免复制。
    • 作为一个想法/问题,category_id不能与日期、数量和类型数据一起存储,然后使用深度查询从单个节点中提取数据吗?如果您在日期属性中添加时间/日期戳,您还可以按月提取数据。
    • 嗨@Jay,我认为你可能只是将所有数据存储在一个节点中是对的。这似乎是处理这个问题的更好方法
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 2018-01-10
    • 2020-01-20
    • 2017-10-19
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多