Firebase数据库 - 如何在密钥下获取值? (不在自定义类下)

时间:2017-12-02 10:48:27

标签: java android firebase

我在Firebase实时数据库中有以下数据结构。我不知道如何提取内容。

我的firebase实时数据库结构:

root
|--inGroup
  |--#userID
    |--#randomId:(the string I want to extract is here)
    |--#randomId2:(the string I want to extract is here)
    |--#randomIdX:(the string I want to extract is here)

任何人都可以教我如何在我的Android应用程序中解压缩它?

我的代码:

firebase db:

中提取内容的部分
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference groupInviteRef = database.getReference("inGroup").child(FirebaseAuth.getInstance().getCurrentUser().getUid());

groupInviteRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot datasnapshot : dataSnapshot.getChildren()) {
            -----I am not sure what to fill in here--------
        }
    }
}

用于保存我想要提取的数据的部分

//Insert a record into InGroup tree
DatabaseReference inGroupRef = FirebaseDatabase.getInstance().getReference("inGroup").child(uid);
inGroupRef.push().setValue(groupId);

我不知道如何从数据库中提取字符串,因为:

1)通常,使用datasnapshot.getValue(XXXX.Class)来获取值的属性是什么,但这一次,它是一个字符串本身,而不是我自己设置的自定义类。

2)我尝试使用datasnapshot.getvalue(String.class)。但得到了这个错误:

com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String

任何人都可以教我如何提取我想要的信息吗?或者我在做push().setValue()时必须放入自定义课程?

提前致谢!

2 个答案:

答案 0 :(得分:1)

最后,我使用下面的代码进行编写,不确定为什么在开始时它不起作用。

groupInviteRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                String value = snapshot.getValue().toString();
                Log.d("val",value);
            }
        }

答案 1 :(得分:0)

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot noteDataSnapshot : dataSnapshot.getChildren()) {
                    String key = noteDataSnapshot.getValue().toString();

                    for (DataSnapshot snapshot : noteDataSnapshot.getChildren()){
                        snapshot.getKey() // YOUR VALUE
                    }
                }
    }