作者:洪泽湖沟鼠_203 | 来源:互联网 | 2023-05-18 09:50
我的Firebase中的数据看起来像这样(这是一个基于Javascript的Web应用程序):
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收到"无效路径"错误.
如果变量(因此路径)发生变化,我也不确定child_added会发生什么.child_added会在新路径上加载所有现有数据,并从那时开始观察新孩子吗?
关于如何处理应用程序的初始状态的任何建议,其中变量尚未填充?
1> Frank van Pu..:
因为您正在构建这样的查询:
dataRef.child('bids').child(auction).child(lotno).on(...
off
每次其中一个action
或多个lotno
变量发生更改时,您将不得不创建附加新侦听器(并转换现有侦听器).
听起来好像一次只能有一个当前的批次,这可能会使它在您的数据模型中建模更有用:
bids
400
1
50.00
2
60.00
401
1
55.00
current
65.00
然后,一旦当前批次的出价已经完成,您可以将其"退休"到其正确的批次编号槽并使下一批次成为current
.使用这样的数据结构,您的拍卖听众始终可以观看current
:
dataRef.child('bids').child(auction).child('current').on(...
Firebase网站上的文档相当完整且易读.关闭听众是通过`off`完成的:https://www.firebase.com/docs/web/guide/retrieving-data.html#section-detaching-callbacks