第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Firebase 實(shí)時(shí)數(shù)據(jù)庫 - 讀取嵌套數(shù)據(jù)

Firebase 實(shí)時(shí)數(shù)據(jù)庫 - 讀取嵌套數(shù)據(jù)

小唯快跑啊 2022-01-12 16:06:25
我正在使用 firebase 做一個(gè)項(xiàng)目,能夠在數(shù)據(jù)庫中保存一些記錄,但檢索它對(duì)我來說一直是個(gè)問題,我已經(jīng)干預(yù)了 SO 的其他帖子,但它們對(duì)我沒有用。這是數(shù)據(jù)庫的樣子(一個(gè)例子):還有我檢索數(shù)據(jù)的代碼:private void readDataFromDB() {    databaseReference.child("users").addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            User user = new User();            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {                user.setStrName(//Get the Name of the user);                user.setStrScore(//Get the Score of the user));            }        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        }    });}用戶類:public class User {  String strName, strScore;  public String getStrName() {      return strName;  }  public void setStrName(String strName) {      this.strName = strName;  }  public String getStrScore() {      return strScore;  }  public void setStrScore(String strScore) {      this.strScore = strScore;  }}如何從每個(gè)特定用戶那里獲取名稱和分?jǐn)?shù)
查看完整描述

2 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

在您的代碼中,您正在設(shè)置值,您需要使用 getter 檢索值。


嘗試以下操作:


databaseReference.child("users").addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            User user    = dataSnapshot.getValue(User.class);

            String name  = user.getStrName();

            String score = user.getStrScore();

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {


    }

});

但是,首先您需要將值添加到數(shù)據(jù)庫示例中:


User user = new User();

user.setStrName("my_name");

user.setStrScore("20");


DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");

ref.push().setValue(user);

注意setValue():


此外,您可以將您自己的類的實(shí)例設(shè)置到此位置,前提是它們滿足以下約束:


類必須有一個(gè)不帶參數(shù)的默認(rèn)構(gòu)造函數(shù)

該類必須為要分配的屬性定義公共 getter。反序列化實(shí)例時(shí),沒有公共 getter 的屬性將設(shè)置為其默認(rèn)值

您需要向 POJO 類添加一個(gè)默認(rèn)構(gòu)造函數(shù),并且該類中public User(){}的字段名稱應(yīng)與數(shù)據(jù)庫中的字段名稱匹配。所以把它String strName, strScore;改成這個(gè)String name, score;并再次生成getter和setter。


查看完整回答
反對(duì) 回復(fù) 2022-01-12
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以使用全局配置文件節(jié)點(diǎn),而不是在每個(gè)節(jié)點(diǎn)中創(chuàng)建配置文件,并在其中存儲(chǔ)配置文件數(shù)據(jù)及其 UID,這將使您更容易獲取單個(gè)用戶的詳細(xì)信息。


-profile

  -UID1

    -name

    -score

  -UID2

    -name

    -score

檢索時(shí),您可以使用 getCurrentUser.getUid() 檢索每個(gè)用戶的數(shù)據(jù):


 String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

databaseReference.child("users").child("profile").child(uid).addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        User user = new User();


           user = dataSnapshot.getValue(User.class);


    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {


    }

});


查看完整回答
反對(duì) 回復(fù) 2022-01-12
  • 2 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)