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

How to manage dynamic path in app to Firebase data

我的 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){...});

应用首次加载时,尚未指定拍卖或批号。而且随着拍卖的进行,拍品编号(甚至可能是拍卖编号)会发生多次变化。

在这种情况下,我对如何维护实时出价列表感到困惑。当应用首次加载时,我的变量 "auction" 和 "lotno" 的值为 "undefined",因此我从 Firebase 收到 "invalid path" 错误。

我也不确定如果变量(以及路径)发生变化,我的 child_added 会发生什么。 child_added 是否会在新路径加载所有现有数据,并从该点开始观察新的子数据?

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

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

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

每次 actionlotno 变量之一发生变化时,您都必须创建附加一个新的侦听器(并 off 现有的侦听器)。

听起来一次只能有一个当前批次,这可能会使将其建模到您的数据模型中更有用:

bids
    400
        1
            50.00
        2
            60.00
    401
        1
            55.00
        current
            65.00

然后,一旦当前拍品的出价完成,您就可以"retire"将其放入适当的拍号位置,并让下一批拍品成为current。使用这样的数据结构,您的拍卖听众可以一直在观看 current:

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