Как назначить инкрементный идентификационный номер из firebase - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в Android Studio. Я хочу присвоить уникальный идентификатор (приращение) от «1», но всякий раз, когда я регистрирую учетную запись, я получаю только один.

btn_register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final String email = et_email.getText().toString().trim();
            final String username = email.split("@")[0];
            final String pwd = et_password.getText().toString().trim();
            final long usr_id = 0; // not increment

            if (email.isEmpty() || pwd.isEmpty()) {
                et_email.setError("Entering Email Password Is required");
                et_email.requestFocus();
                return;
            }
            if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
                et_email.setError("Entering Valid Email is required");
            }
            if (pwd.length() < 3) {
                et_password.setError("Password Length Should More Than 3");
                et_password.requestFocus();
            } else {
                m_auth.createUserWithEmailAndPassword(email, pwd).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                    DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users");
                    DatabaseReference usr_uid = ref.child(m_auth.getCurrentUser().getUid());
                    if (task.isSuccessful()) {
                        Toast.makeText(MainActivity.this, "Registration Successed", Toast.LENGTH_SHORT).show();
                        //User usr = new User(email,username,usr_id+1);

                        usr_uid.child("email").setValue(email);
                        usr_uid.child("username").setValue(username);
                        usr_uid.child("password").setValue(pwd);
                        usr_uid.child("icon").setValue("default_icon");
                        usr_uid.child("id").setValue(String.valueOf(usr_id+1));

                        Intent refer_to_home = new Intent(MainActivity.this, Home_Activity.class);
                        startActivity(refer_to_home);
                        finish();
                    }
                    else
                        Log.e("user_reg_fail", "Field Empty!");
                    }
                });
            }
        }
    });

И это моя модель:

public class User {

    private String email;
    private String username;
    private long usr_id=0;
    private String icon;

    public User(String email, String username, long id) {
        this.email = username;
        this.username = username;
        this.usr_id = id;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public User() {
    }

    public String getEmail() {
        return email;
    }

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

    public String getUsername() {
        return username;
    }

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

    public long getId() {
        return usr_id;
    }

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

База данных, которую я получаю

dldnPGvVsHeQmVqHkuJS4no4g1r1
|-email: "effeff@gmail.com"
|-icon: "default_icon"
|-id: "1"   //from one
|-password: "xxx"
|-username: "effeff"
gWEvZMOgi7hmuU5xOXhlG3vibgj1
|-email: "feefee@gmail.com"
|-icon: "default_icon"
|-id: "1" // id is still one
|-password: "xxx"
|-username: "feefee"

Я понятия не имею, почему она не увеличивает ID. Как я могу получить приращение "2" "3"? Я могу успешно зарегистрировать свой аккаунт, но ему остается только присвоить идентификатор "1"

1 Ответ

0 голосов
/ 15 октября 2019

Таким образом, внутри вашего onClick метода у вас есть эти строки

final long usr_id = 0; // not increment
...
usr_uid.child("id").setValue(String.valueOf(usr_id+1));

каждый раз, когда вы нажимаете эту кнопку, usr_id устанавливает свои значения в 0.

С помощью firebase выиметь уникальный идентификатор документа (например, в вашем вопросе dldnPGvVsHeQmVqHkuJS4no4g1r1, gWEvZMOgi7hmuU5xOXhlG3vibgj1) вам не нужен дополнительный идентификатор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...