如何在Android中从Firebase获取特定数据

如何在Android中从Firebase获取特定数据,android,firebase,Android,Firebase,我已经在我的应用程序中集成了谷歌登录,我正在将一些数据推送到fire base,包括用户U-id。我已经做了很多研究,但没有得到任何结果。我面临的问题是,我想要获取特定数据,例如,如果用户a登录并推送5个数据,然后用户B登录并推送3个数据。我想要一个类似用户a是否再次登录的查询仅获取他的5个数据,不获取用户B推送的数据。提前感谢:) 通过使用此选项,它可以从firebase获取所有数据: databaseReference.addValueEventListener(new ValueEven

我已经在我的应用程序中集成了谷歌登录,我正在将一些数据推送到fire base,包括用户U-id。我已经做了很多研究,但没有得到任何结果。我面临的问题是,我想要获取特定数据,例如,如果用户a登录并推送5个数据,然后用户B登录并推送3个数据。我想要一个类似用户a是否再次登录的查询仅获取他的5个数据,不获取用户B推送的数据。提前感谢:)

通过使用此选项,它可以从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但都不管用

我的结构是:


您还需要对数据的引用,该引用不包括在代码块中。因此,大致如下(这应该在这之前):


您还需要一个对数据的引用,它不包括在您的代码块中。因此,大致如下(这应该在这之前):


要从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) {

        }
    });

要从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) {

        }
    });

首先在您的子数据中添加一个用户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) {

    } 
});

首先在您的子数据中添加一个用户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) {

    } 
});

首先你必须区分。你必须实施Firebase身份验证,你可以获得每个用户的Firebase UID

String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
然后分别存储在新节点中。 i、 e获取Firebase数据库实例并

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

首先你必须区分。你必须实施Firebase身份验证,你可以获得每个用户的Firebase UID

String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
然后分别存储在新节点中。 i、 e获取Firebase数据库实例并

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

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

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);

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

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);

您可以通过添加用户id来添加此功能,并根据用户id获取数据。我正在firebase中添加用户id。我在获取该用户数据时遇到的问题请检查我的答案,希望能对您有所帮助。检查此选项可能会帮到您:您可以通过添加用户id来添加此功能,并根据用户id获取数据。我正在firebase中添加用户id获取该用户数据时遇到的问题请检查我的答案,希望能对您有所帮助。检查这可能会对您有所帮助:我已在Oncreate方法中添加了此行我已在Oncreate方法中添加了此行。equalTo(“user_id”);在参数shuold中,我添加了user_id值?是,因为我给出了一个子节点的示例。。或者,如果您可以为特定用户传递任何唯一值。可能是您的用户密钥可能是唯一的添加数据后出现了什么问题您是否打印了任何日志或任何东西,我可以密切帮助您。您是否在firebase数据库中添加了“user_id”密钥和值,如果您添加了该密钥,那么您是否可以显示您的数据库屏幕快照我的数据库中的“user”是user.equalTo(“user_id”)的密钥;在参数shuold中,我添加了user_id值?是,因为我给出了一个子节点的示例。。或者,如果您可以为特定用户传递任何唯一值。可能是您的用户密钥可能是唯一的添加数据后出现了什么问题您是否打印了任何日志或其他内容,我可以密切帮助您。您是否在firebase数据库中添加了“user_id”密钥和值,如果您添加了该密钥,那么您是否可以显示您的数据库屏幕快照该“user”在我的数据库中,是用户的密钥,然后检索数据,然后检索数据