【问题标题】:Retrieve user data from Firebase database从 Firebase 数据库中检索用户数据
【发布时间】:2017-06-12 08:10:57
【问题描述】:

我创建了一个 Android 应用程序,用户可以通过该应用程序注册和登录。当用户注册成功时,将在我的数据库中为该用户创建名称和值。现在我想分别检索每个用户的数据。

【问题讨论】:

    标签: android firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    要从这个结构中检索当前用户的数据,你需要做两件事:

    1. know the uid of the current user
    2. 然后read the data from the database

    在代码中:

    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    FirebaseDatabase.getInstance.getReference(uid).addListenerForSingleValueEvent(new ValueEventListener() {
    
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            long points = dataSnapshot.child("Points").getValue(Long.class);
         }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
    

    【讨论】:

    • 我试过了,但登录我的应用程序后,应用程序不幸停止了。我用这个:long points = dataSnapshot.child("Points").getValue(long.class); Points.setText((int) points);
    • 如果应用程序崩溃了,您的日志猫中将会有一个异常+堆栈跟踪来解释它为什么崩溃。如果您想查看它是否正确读取了快照中的值:System.out.println(points); 并检查 logcat。
    【解决方案2】:

    试试这个:

     mDatabase.child("ezzeearn").addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Map<String, String> map = (Map<String, String>) dataSnapshot.getValue();
                String point = map.get("Points");
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
    });
    

    【讨论】:

    【解决方案3】:

    使用迭代器可以获取特定用户的数据

    Iterator<String> iter = json.keys();
    while (iter.hasNext()) {
        String key = iter.next();
        try {
            Object value = json.get(key);
        } catch (JSONException e) {
            // Something went wrong!
        }
    }
    

    【讨论】:

    • 我没听明白?我可以使用数据快照吗?
    • 当您登录时,您需要存储您的响应,这将帮助您获取密钥
    • 你看到我的数据库图片了吗?你能写下完整的代码吗?
    【解决方案4】:

    尝试使用以下方法:

         public void getAllUsersFromFirebase() {  
        DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference().child("ezzeearn");
        UserRef.keepSynced(true);
        UserRef.addValueEventListener(new ValueEventListener() {
            @Override  
            public void onDataChange(DataSnapshot dataSnapshot) {
                Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
    
                while (dataSnapshots.hasNext()) {
                    DataSnapshot dataSnapshotChild = dataSnapshots.next();
                    String resultString = (String)dataSnapshotChild.getValue();
    
    
                }  
    
            }  
    
            @Override  
            public void onCancelled(DatabaseError databaseError) {
                    // for handling database error            
            }  
        });  
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 2018-10-04
      • 2018-03-03
      相关资源
      最近更新 更多