Android - Добавление пользовательского идентификатора в документ Firestore - PullRequest
0 голосов
/ 23 сентября 2018

Я работаю над проектом, который содержит код, подобный следующему: Как добавить документ с пользовательским идентификатором в firestore (Angular)

Когда я собираюсь попробоватьприложение, оно всегда падает. Но код все тот же.

Ошибка, которую я получаю в LogCat, такова:

Недопустимая ссылка на документ. Ссылки на документ должны иметь четноечисло сегментов, но у пользователей есть 1

Мой полный код такой:

public class RegisterActivity extends AppCompatActivity {


private EditText registerUsername;
private EditText registerEmail;
private EditText registerPassword;
private EditText registerConfirmPassword;
private Button registerRegisterButton;
private Button registerLoginButton;
private ProgressBar registerProgressBar;

private FirebaseFirestore firebaseFirestore;

private String user_id;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    registerUsername = findViewById(R.id.register_username);
    registerEmail = findViewById(R.id.register_email);
    registerPassword = findViewById(R.id.register_password);
    registerConfirmPassword = findViewById(R.id.register_confirm_password);
    registerRegisterButton = findViewById(R.id.register_register_button);
    registerLoginButton = findViewById(R.id.register_login_button);
    registerProgressBar = findViewById(R.id.register_progressBar);

    firebaseFirestore = FirebaseFirestore.getInstance();

    user_id = registerUsername.getText().toString();

    registerLoginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent loginIntent = new Intent(RegisterActivity.this, LoginActivity.class);
            startActivity(loginIntent);

        }
    });

    registerRegisterButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String username = registerUsername.getText().toString();
            String email = registerEmail.getText().toString();
            String password = registerPassword.getText().toString();
            String confirmPassword = registerConfirmPassword.getText().toString();

            if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(email) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(confirmPassword)) {

                if (password.equals(confirmPassword)) {

                    registerProgressBar.setVisibility(View.VISIBLE);

                    Map<String, String> usersMap = new HashMap<>();
                    usersMap.put("username", username);
                    usersMap.put("email", email);
                    usersMap.put("password", password);

                    firebaseFirestore.collection("Users").document(user_id).set(usersMap).addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {

                            Toasty.success(RegisterActivity.this, "Successfully Registered", Toast.LENGTH_SHORT).show();

                            Intent loginIntent = new Intent(RegisterActivity.this, LoginActivity.class);
                            startActivity(loginIntent);

                            registerProgressBar.setVisibility(View.INVISIBLE);

                        }
                    });

                } else {

                    Toasty.error(RegisterActivity.this, "Passwords Don't Match", Toast.LENGTH_SHORT).show();

                }

            }

        }
    });
}}

Я хочу, чтобы «user_id» был идентификатором документа, а НЕ другим идентификатором, сгенерированным Firestore.

Может кто-нибудь помочь, пожалуйста? И заранее спасибо.

1 Ответ

0 голосов
/ 23 сентября 2018

Вы устанавливаете user_id в начале вашего onCreate, возможно, когда EditText registerUsername не содержит никакого текста.Это означает, что user_id всегда будет пустым, независимо от того, что происходит в этом упражнении.

Вы не можете передать пустую строку в document().Вам нужно фактическое строковое значение, которое также является действительным идентификатором документа Firestore .Попробуйте получить строковое значение в registerUsername после заполнения формы, а не до.

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