从登录用户的Firebase Android中的Child检索数据对象

时间:2018-03-15 00:16:43

标签: android firebase-realtime-database

我一直试图从这里只检索子数据,但是当我调试它时,每个对象显示为null,我不知道为什么,请帮忙。 我已经在堆栈溢出时遵循了一些说明,但我似乎无法获得解决方案。

我在firebase上的数据如下所示:

Image of the firebase db

这是我的代码:

FirebaseAuth mFirebaseAuth = FirebaseAuth.getInstance();
            FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
            DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference().child("the-root-db");
            DatabaseReference mFirebaseDbReferenceCurrentUser = dbRef.child(mFirebaseUser.getUid());
            DatabaseReference userSettingTable = mFirebaseDbReferenceCurrentUser.child("UserSetting");
            userSettingTable.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot userSettingFromDb : dataSnapshot.getChildren()) {
                            mDbPrice = (String) userSettingFromDb.child("currencyPrice").getValue();
                            mDbCurrencyId = (String) userSettingFromDb.child("currencyId").getValue();
                            mDbUserTrackPrice = (String) userSettingFromDb.child("userSettingCurrencyValue").getValue();
                            break;
                        }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.d("Query Db", databaseError.toString());
                }
            });

1 个答案:

答案 0 :(得分:0)

由于您将ValueListener附加到特定节点,因此您只会获得一个DataSnapshot个节点。这意味着你不需要循环其子女。

userSettingTable.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        mDbPrice = dataSnapshot.child("currencyPrice").getValue(String.class);
        mDbCurrencyId = dataSnapshot.child("currencyId").getValue(String.class);
        mDbUserTrackPrice = dataSnapshot.child("userSettingCurrencyValue").getValue(String.class);
    }
相关问题