如何从Android

时间:2017-07-08 05:29:01

标签: android firebase

我已经在我的应用中集成了Google登录,我正在将一些数据推送到包括用户U-id在内的基地。我已经研究了很多并没有得到任何问题我面临的问题我想要获取特别数据,例如,如果用户A登录和推送5数据,然后用户B登录并推送3数据。我想要一个查询,如果用户A唱歌再次它将只获得他的5个数据而不是数据由用户推动B.Thanks in Advance:)

通过使用它,它从firebase获取所有数据:

 databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot data : dataSnapshot.getChildren()) {
                FirebaseModel firebasemodel = 
      data.getValue(FirebaseModel.class);
                firebasemodels.add(firebasemodel);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我已经尝试了所有.child .orderby和.equalTo但是没有工作

我的结构就像:

My FireBase Structure

5 个答案:

答案 0 :(得分:0)

您还需要对数据的引用,这些数据不包含在您的代码块中。所以有些事情(这应该在此之前):

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("notepad-secure/notepad");

答案 1 :(得分:0)

要从firebase获取特定值,请尝试使用此代码

   FirebaseDatabase database;
   database.getReference().child("notepad-secure").orderByChild("id").equalTo(user).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.getValue() != null) {
                for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {

                    User userdet =childSnapshot.getValue(yourclass.class);
                    String note=userdet.note;
                   //Here you will get the string values what you want to fetch
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

答案 2 :(得分:0)

首先在子数据中添加user_id键,如下所示:

id:"",
note:"",
title:"",
user:""
user_id:"{id from which user have you uploaded data}"

并且您可以使用特定的用户数据调用以下功能        注意:“user_id”=用户上传数据的ID

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

Query query = reference.child("notepad").orderByChild("id").equalTo("user_id");
query.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            // dataSnapshot is the "notepad" node with all children with id 
            for (DataSnapshot notepad: dataSnapshot.getChildren()) {
                // do something with the individual "notepad_data" 
            } 
        } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {

    } 
});

答案 3 :(得分:0)

首先必须区分.U必须实施Firebase身份验证,您才能获得每个用户的Firebase UID。

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

然后在新节点中单独存储。 即使用Firebase数据库实例和

databaserefernace.child("Data").Child("userID);

答案 4 :(得分:0)

将用户数据添加到Firebase数据库后,您可以使用uid对象提供的特定FirebaseAuth添加用户数据,如下所示:

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

假设您的数据库结构如下所示:Firebase root -> notepad-secure -> notepad,要检索数据,您可以使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference notepadRef = rootRef.child("notepad-secure").child("notepad").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String id = dataSnapshot.child("id").getValue(String.class);
        String note = dataSnapshot.child("note").getValue(String.class);
        String title = dataSnapshot.child("title").getValue(String.class);
        String user = dataSnapshot.child("user").getValue(String.class);
        Log.d("TAG", id + " / " + note + " / " + title + " / " + user);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
notepadRef.addListenerForSingleValueEvent(eventListener);
相关问题