亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在firebase android studio中插入數據時如何添加主鍵?

在firebase android studio中插入數據時如何添加主鍵?

慕無忌1623718 2021-10-06 10:23:25
當他們在我的應用程序中注冊時,如何為每個用戶添加主鍵?這是我當前使用用戶名作為主鍵的代碼(編程中的不良做法):btnRegister.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            final ProgressDialog mDialog = new ProgressDialog(Register.this);            mDialog.setMessage("Please wait...");            mDialog.show();            table_user.addValueEventListener(new ValueEventListener() {                @Override                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                    //Check if the username already exists                    if(dataSnapshot.child(username.getText().toString()).exists()){                        mDialog.dismiss();                        Toast.makeText(Register.this, "Username already exists", Toast.LENGTH_SHORT).show();                    }                    else{                        mDialog.dismiss();                        User user = new User(user_fname.getText().toString(), user_lname.getText().toString(), user_email.getText().toString(), user_pass.getText().toString());                        table_user.child(username.getText().toString()).setValue(user);                        Toast.makeText(Register.this, "Account successfully registered", Toast.LENGTH_SHORT).show();                        finish();                    }                }                @Override                public void onCancelled(@NonNull DatabaseError databaseError) {                }            });        }    });我的用戶的模型:public class User {private String FirstName;private String LastName;private String Email;private String Password;public User() {}public User(String firstName, String lastName, String email, String password) {    FirstName = firstName;    LastName = lastName;    Email = email;    Password = password;}我只是 firebase 的新手,這就是為什么我很難理解它。任何幫助將不勝感激,謝謝。
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

要為新的子節點生成唯一鍵,請使用 Firebase 的push()方法:

table_user.push().setValue(user);

生成的密鑰push()在統計上保證是唯一的,是在客戶端生成的(即使沒有互聯網連接也可以),并且是按時間順序排列的。唯一的缺點是它們有點長,因此很難記住。盡管如此,對于基本上按時間順序排列的數據或沒有自然鍵的數據來說,它們確實是最好的鍵。

需要考慮的一件事是使用 Firebase 身份驗證來對用戶進行身份驗證。如果你這樣做,用戶有一個自然的關鍵:他們所謂的UID。由于它們有一個自然鍵,在這種情況下,您應該將它們存儲在鍵下。所以:

table_user.child(uidFromAuthentication).setValue(user);


查看完整回答
反對 回復 2021-10-06
  • 1 回答
  • 0 關注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號