如何从Firebase获得价值

时间:2017-09-12 12:08:01

标签: java android firebase firebase-realtime-database

我是Android的新手,我希望从Firebase数据库中获取userIDS,我已尝试使用此功能但返回null

  • 使用此代码
  • Constants.ARG_CHAT_GROUP_ROOMS = GroupsConstants.NEW_NODE = newGroup
  • 的价值
    private void getMYuid() {
    String senderUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    DatabaseReference mTest = FirebaseDatabase.getInstance().getReference();
    mTest.child(Constants.ARG_CHAT_GROUP_ROOMS).child(Constants.NEW_NODE)
            .child(senderUid).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
        if (!dataSnapshot.exists()){
            Toast.makeText(ActivityChatView.this, "not exist", Toast.LENGTH_SHORT).show();
            Log.e("151","ACV"+dataSnapshot);
        }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
    Log.e("139","ACV"+senderUid);
    }
  • 数据库结构就是这个

enter image description here

2 个答案:

答案 0 :(得分:3)

如果你想要第一个在15052169227329_myGroupName_Hell下安妮:你的问题是你忘记了节点" Constants.NEW_NODE"

private void getMYuid() {
        String senderUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
        DatabaseReference mTest = FirebaseDatabase.getInstance().getReference();
        mTest.child(Constants.ARG_CHAT_GROUP_ROOMS).child("15052169227329_myGroupName_Hell By Anne").child(Constants.NEW_NODE)
                .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (!dataSnapshot.exists()){
                    Toast.makeText(ActivityChatView.this, "not exist", Toast.LENGTH_SHORT).show();
                    Log.e("151","ACV"+dataSnapshot);
                }

                // You can cast this object later but it seems that that is a string and not an array
                Object yourRequiredObject = dataSnapshot.child("usersIDS").getValue();
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        Log.e("139","ACV"+senderUid);
    }

答案 1 :(得分:1)

正如我所看到的,它不是一个数组,它是一个字符串。要获取userIDS,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = rootRef.child(Constants.ARG_CHAT_GROUP_ROOMS).child(senderUid).child(Constants.NEW_NODE);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String usersIDS = dataSnapshot.child("usersIDS").getValue(String.class);
        Log.d("TAG", usersIDS);
        //Here you can split the usersIDS String by , (comma)
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

senderUid是失踪的孩子。此子项可以具有1505217176288_myGroupName_1或其他相应组名称的值。