首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索值firebase有困难

检索值firebase有困难
EN

Stack Overflow用户
提问于 2017-08-25 00:50:15
回答 3查看 49关注 0票数 0

所以我在从我的firebase数据库中检索值时遇到了一个问题。基本上,我希望获得与"username“键相关联的值。但是,我当前的代码只返回任何内容。当我通过省略.child(“用户名”)来更改代码时,dataSnapshotTwo同时包含电子邮件和用户名。我在这里做错了什么?

这是我的代码:唯一用户is是随机字符的字符串,如"cUkHiXwIaXOqigeoRPuh3Yc9oau2“

代码语言:javascript
复制
public void sendFriendRequest(final String userID){
    mDatabase.child("Users").child(uniqueUserID).child("username")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshotTwo) {

                        for (DataSnapshot miniSnapshot : dataSnapshotTwo.getChildren()) {
                            String currentUserName = (String) miniSnapshot.getValue();
                            mDatabase.child("Users").child(userID).child("Requests").child(uniqueUserID).setValue(currentUserName);

                    }
                }

                @Override
                public void onCancelled(DatabaseError firebaseError) {
                    Log.e("MainActivity", "onCancelled", firebaseError.toException());
                }
            });

}

这是我的数据库结构:

代码语言:javascript
复制
{"Users" : 
{
    "User_1" : {
           "Called" : {
                "Fritz" : 1
            },

            "City" : "Groningen",

            "Friends" : {
                  "Fritz" : 50,

                  "Jos" : 0


            "Requests" : {

                "zuipmaat_1" : 0


            "email" : "b@hotmail.com",

            "username" : "Bert"



    "cUkHiXwIaXOqigeoRPuh3Yc9oau2" : {

            "Requests" : {

                "cUkHiXwIaXOqigeoRPuh3Yc9oau2" : "Tommie"


            "email" : "t2@live.nl",

            "username" : "Tommie"



    "jAYc9IzcBRRuXZCxYEncEIRrPw72" : {

            "Requests" : {

                "cUkHiXwIaXOqigeoRPuh3Yc9oau2" : "Tommie "


            "email" : "t@hotmail.com",

            "username" : "Tom"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-25 19:17:59

要获取用户名,请使用以下代码:

代码语言:javascript
复制
public void sendFriendRequest(final String userID){
    mDatabase.child("Users").child(uniqueUserID).child("username").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshotTwo) {
            String currentUserName = dataSnapshotTwo.getValue(String.class);
            Log.d("TAG", currentUserName);
        }

        @Override
        public void onCancelled(DatabaseError firebaseError) {
            Log.e("MainActivity", "onCancelled", firebaseError.toException());
        }
    });
}

正如您可能看到的,我删除了那个for循环,因为不需要它。

票数 0
EN

Stack Overflow用户

发布于 2017-08-25 01:48:27

这个看起来更漂亮

代码语言:javascript
复制
 {
 "Users": {
  "User_1": {
     "Called": {
        "Fritz": 1
     },
     "City": "Groningen",
     "Friends": {
        "Fritz": 50,
        "Jos": 0
     },
     "Requests": {
        "zuipmaat_1": 0
     },
     "email": "b@hotmail.com",
     "username": "Bert"
  },
  "cUkHiXwIaXOqigeoRPuh3Yc9oau2": {
     "Requests": {
        "cUkHiXwIaXOqigeoRPuh3Yc9oau2": "Tommie"
     },
     "email": "t@live.nl",
     "username": "Tommie"
  },
  "jAYc9IzcBRRuXZCxYEncEIRrPw72": {
     "Requests": {
        "cUkHiXwIaXOqigeoRPuh3Yc9oau2": "Tommie"
     },
     "email": "tom@hotmail.com",
     "username": "Tom"
  }
 }
}
票数 0
EN

Stack Overflow用户

发布于 2017-08-25 03:16:32

如果我没弄错你的意图...

首先,更好地处理对象。

代码语言:javascript
复制
public class User {

    public Called Called;
    public String City;
    public ArrayList<Friend> Friends;
    public ArrayList<Requests> Requests;
    public String email;
    public String username;

    public class Called{
        public String name;
        public int sum;
    }

    public class Friend{
        public String name;
        public int sum;
    }

    public class Requests{
        public String name;
        public int sum;
    }
}

其次,尝试更新/插入all对象

代码语言:javascript
复制
User user = new User();
user.City = ..... /*populate the object*/

database.getReference("Users").push().setValue(user); // generate the user Id automatically 

代码语言:javascript
复制
database.getReference("Users").child(userID).setValue(user); // generate your own user Id 

第三,检索数据

代码语言:javascript
复制
 public void sendFriendRequest(final String userID) {
    mDatabase.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshotTwo) {

            for (DataSnapshot miniSnapshot : dataSnapshotTwo.getChildren()) {
                User user = (User) miniSnapshot.getValue();
                System.out.println(user.username); // print the username
            }
        }

        @Override
        public void onCancelled(DatabaseError firebaseError) {
            Log.e("MainActivity", "onCancelled", firebaseError.toException());
        }
    });
}

永远不要测试它。希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45867082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档