簡體   English   中英

如何在 Firebase Firestore 中添加自動 uid 字段

[英]How to add auto uid field in Firebase Firestore

當用戶注冊他們的帳戶時,我想在 firebase 防火牆中添加一個自動 uid 字段。 如何在我的代碼中實現它以添加由 firebase 生成的 uid?

這是我的寄存器。java 代碼:

public class Register extends AppCompatActivity {

//Variables
TextInputLayout username, email, PhoneNo, password;
RadioGroup radioGroup;
RadioButton selectedElderly, selectedGuardian;
Button regBtn, regToLoginBtn;

FirebaseAuth fAuth;
FirebaseFirestore fStore;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    fAuth = FirebaseAuth.getInstance();
    fStore = FirebaseFirestore.getInstance();

    //Hooks to all xml elements in activity_register.xml
    username = findViewById(R.id.reg_username);
    email = findViewById(R.id.reg_email);
    PhoneNo = findViewById(R.id.reg_phoneNo);
    password = findViewById(R.id.reg_password);
    regBtn = findViewById(R.id.reg_btn);
    regToLoginBtn = findViewById(R.id.reg_login_btn);
    radioGroup = findViewById(R.id.radio_type);
    selectedGuardian = findViewById(R.id.radioGuardian);
    selectedElderly = findViewById(R.id.radioElderly);

    regToLoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Register.this, Login.class);
            startActivity(intent);
        }
    });

    regBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (validateUsername() && validateEmail() && validatePhoneNo() && validateUserType() && validatePassword() == true) {
                Intent intent = new Intent(Register.this, Login.class);
                startActivity(intent);
            } else {
                validateUsername();
                validateEmail();
                validatePhoneNo();
                validateUserType();
                validatePassword();
            }
            fAuth.createUserWithEmailAndPassword(email.getEditText().getText().toString(), password.getEditText().getText().toString()).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                @Override
                public void onSuccess(AuthResult authResult) {
                    FirebaseUser user = fAuth.getCurrentUser();
                    Toast.makeText(Register.this, "Account Created", Toast.LENGTH_SHORT).show();
                    DocumentReference df = fStore.collection("Users").document(user.getUid());
                    Map<String, Object> userInfo = new HashMap<>();
                    userInfo.put("Username", username.getEditText().getText().toString());
                    userInfo.put("Email", email.getEditText().getText().toString());
                    userInfo.put("phoneNo", PhoneNo.getEditText().getText().toString());
                    userInfo.put("Password",password.getEditText().getText().toString());
                    //specify the user is elderly
                    if (selectedElderly.isChecked()) {
                        userInfo.put("isElderly", "1");
                    }
                    if (selectedGuardian.isChecked()) {
                        userInfo.put("isGuardian", "1");
                    }

                    df.set(userInfo);
                    if (selectedElderly.isChecked()) {
                        startActivity(new Intent(getApplicationContext(), Login.class));
                        finish();
                    }
                    if (selectedGuardian.isChecked()) {
                        startActivity(new Intent(getApplicationContext(), Login.class));
                        finish();
                    }
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(Register.this, "Failed to Create Account", Toast.LENGTH_SHORT).show();
                }
            });

                }
    });
}
}

我的數據庫結構是:

數據庫結構

如圖所示,如何再添加一個包含 firebase 自動生成的 uid 的字段?

如果要將生成的 id 添加到文檔中,則可以執行以下操作:

String id = fStore.collection("Users").document().getId();

這將生成一個隨機 id,然后您可以執行以下操作:

DocumentReference df = fStore.collection("Users").document(user.getUid());
Map<String, Object> userInfo = new HashMap<>();

userInfo.put("Username", username.getEditText().getText().toString());
userInfo.put("Email", email.getEditText().getText().toString());
userInfo.put("phoneNo", PhoneNo.getEditText().getText().toString());
userInfo.put("Password",password.getEditText().getText().toString());
userInfo.put("id",id);

df.set(userInfo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM