当他们在我的应用程序中注册时,如何为每个用户添加主键?这是我当前使用用户名作为主键的代码(编程中的不良做法):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条经验 获得超3个赞
要为新的子节点生成唯一键,请使用 Firebase 的push()
方法:
table_user.push().setValue(user);
生成的密钥push()
在统计上保证是唯一的,是在客户端生成的(即使没有互联网连接也可以),并且是按时间顺序排列的。唯一的缺点是它们有点长,因此很难记住。尽管如此,对于基本上按时间顺序排列的数据或没有自然键的数据来说,它们确实是最好的键。
需要考虑的一件事是使用 Firebase 身份验证来对用户进行身份验证。如果你这样做,用户也有一个自然的关键:他们所谓的UID。由于它们有一个自然键,在这种情况下,您应该将它们存储在该键下。所以:
table_user.child(uidFromAuthentication).setValue(user);
添加回答
举报
0/150
提交
取消