如何管理应用到Firebase数据的动态路径

时间:2015-03-13 16:53:17

标签: javascript firebase

我的Firebase中的数据看起来像这样(这是一个基于Javascript的网络应用程序):

bids
    400
        1
            50.00
        2
            60.00
    401
        1
            55.00
        2
            65.00

400和401是指拍卖编号。 1和2是指每次拍卖中的单个拍品。第三级是出价金额。

我正在通过观看这样的child_added向用户显示所有出价的列表:

dataRef.child('bids').child(auction).child(lotno).on('child_added', function(data){...});

首次加载应用时,尚未分配竞价或批号。随着拍卖的进行,拍品编号(甚至可能是拍卖编号)会多次改变。

对于如何在这种情况下维护实时的出价列表,我感到很困惑。当应用程序首次加载时,我的变量"拍卖"和" lotno"有价值"未定义"因此我得到一条"无效路径"来自Firebase的错误。

我还不确定如果变量(因此路径)发生变化,我的child_added会发生什么。 child_added会在新路径上加载所有现有数据,并从那时开始观察新孩子吗?

关于如何处理应用程序初始状态的任何建议,其中变量尚未填充?

1 个答案:

答案 0 :(得分:5)

由于您构建了这样的查询:

dataRef.child('bids').child(auction).child(lotno).on(...

每次offaction个变量之一发生更改时,您都必须创建附加新的侦听器(并转换lotno现有的侦听器)。

听起来一次只能有一个当前批次,这可能会使对它进入数据模型的建模更有用:

bids
    400
        1
            50.00
        2
            60.00
    401
        1
            55.00
        current
            65.00

然后,当前批次的竞标结束后,您可以退休"它到正确的lotnumber槽并让下一批成为current。使用这样的数据结构,您的拍卖听众始终可以观看current

dataRef.child('bids').child(auction).child('current').on(...