为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 实时数据库下载使用率非常高

Firebase 实时数据库下载使用率非常高

偶然的你 2023-09-20 19:15:39
以下代码花费 1MB 从 Firebase 中提取数据。这是正常的吗?我可以做什么来减少它?因为它的成本太高了。我认为有更好的方法。有人可以帮忙吗?    mDatabaseRef.child("FalMetinleri").addListenerForSingleValueEvent(new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot dataSnapshot) {        long KapasiteGiris= dataSnapshot.child("giris").child(finalKategoriCinsiyet).child(finalKategoriGiris).getChildrenCount();        long KapasiteKarsilama= dataSnapshot.child("karsilama").getChildrenCount();        long KapasiteAskDurumu1= dataSnapshot.child("askDurumu").child(finalKategoriCinsiyet).child(finalKategoriAskdurumu).getChildrenCount();        long KapasiteAskDurumu2= dataSnapshot.child("askDurumu2").child(finalKategoriCinsiyet).child(finalKategoriAskdurumu).getChildrenCount();        long KapasiteisDurumu1= dataSnapshot.child("isDurumu").child(finalKategoriCinsiyet).child(finalKategoriMeslek).getChildrenCount();        long KapasiteisDurumu2= dataSnapshot.child("isDurumu2").child(finalKategoriCinsiyet).child(finalKategoriMeslek).getChildrenCount();        long KapasiteBitis= dataSnapshot.child("bitis").child(finalKategoriCinsiyet).child(finalKategoriBitis).getChildrenCount();        kapasite[0] = KapasiteGiris;        kapasite[1] = KapasiteKarsilama;        kapasite[2] = KapasiteAskDurumu1;        kapasite[3] = KapasiteAskDurumu2;        kapasite[4] = KapasiteisDurumu1;        kapasite[5] = KapasiteisDurumu2;        kapasite[6] = KapasiteBitis;        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        dialogFragment.dismissAllowingStateLoss();   }});输出:       KapasiteGiris:8       KapasiteKarsilama:5       KapasiteAskDurumu1:4       KapasiteAskDurumu2:14       KapasiteisDurumu1:5       KapasiteisDurumu2:4       KapasiteBitis:13CLI 报告:
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

这里唯一重要的代码是附加侦听器的查询:

mDatabaseRef.child("FalMetinleri").addListenerForSingleValueEvent()

它所做的就是获取节点“FalMetinleri”下的所有内容。侦听器内的所有其他代码不会消耗更多数据,因为该子级的整个快照已经在内存中。看起来该快照中有大约 1MB 的数据。

如果您不想要该子级的全部内容,则可以单独请求其中的每个嵌套子级。这将需要为每个子项执行一个查询,并为每个子项提供一个新的侦听器。


查看完整回答
反对 回复 2023-09-20
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果每个节点内都有大量数据,则 getChildrenCount() 是一个不好的做法。你应该尝试firestore。



查看完整回答
反对 回复 2023-09-20
  • 2 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信