为什么我无法从Firebase实时数据库检索用户名和密码 [英] Why i can't retrieve username and password from Firebase realtime database

查看:27
本文介绍了为什么我无法从Firebase实时数据库检索用户名和密码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用存储在Firebase实时数据库中的用户名和密码登录.但是我的代码不起作用.我包括我的数据库图片和代码.请帮助我.

I want to login using username and password that is stored in Firebase realtime database. But my code does not work. I include my database picture and code. Please help me.

这是数据库映像:

这是我的主要活动代码MainActivity.java

This is my main activity code MainActivity.java

databaseReference=FirebaseDatabase.getInstance().getReference("Client");
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Query query = databaseReference.child("Client").orderByChild("username").equalTo(editTextUsername.getText().toString().trim());
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot user : dataSnapshot.getChildren()) {
                            Users usersBean = user.getValue(Users.class);
                            if (usersBean.password.equals(editTextPassword.getText().toString().trim())) {
                                Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(MainActivity.this, "wrong", Toast.LENGTH_SHORT).show();
                            }
                        }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    });

这是我的用户java类Users.java

Here is my users java class Users.java

    public class Users {
    String email;
    String id;
    String password;
    String username;

    public Users() {

    }

    public Users(String email, String id, String password, String username) {
        this.email = email;
        this.id = id;
        this.password = password;
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

推荐答案

要解决此问题,请更改以下代码行:

To solve this, please change the following line of code:

databaseReference=FirebaseDatabase.getInstance().getReference("Client");

databaseReference=FirebaseDatabase.getInstance().getReference();

由于在查询中使用了对 .child("Client")的调用,因此无需获取 Client 节点的引用.

There is no need to get a reference of the Client node since you are using a call to .child("Client") in your query.

要解决您现在根据评论获得的错误,请从 String 更改 Users 类中的 id 属性的类型到 long 以及这样的getter和setter方法:

To solve the error you get now according to your comment, plase change the type of your id property in your Users class from String to long and the getter and setter like this:

public class Users {
    String email;
    long id;
    String password;
    String username;

    public Users() {

    }

    public Users(String email, long id, String password, String username) {
        this.email = email;
        this.id = id;
        this.password = password;
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

这篇关于为什么我无法从Firebase实时数据库检索用户名和密码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆