如何创建用户名,然后使用 Firebase 与用户插入/关联数据
Posted
技术标签:
【中文标题】如何创建用户名,然后使用 Firebase 与用户插入/关联数据【英文标题】:How to create the User Name and then Insert/relate data with User using Firebase 【发布时间】:2021-09-17 06:45:35 【问题描述】:这是我尝试创建用户然后在 Firebase 中为单个用户插入数据的 Java 代码。 如何为单个用户插入数据?
public class MainActivity extends AppCompatActivity
Button submit;
EditText text1;
FirebaseDatabase mydata;
DatabaseReference mref;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
submit = findViewById(R.id.submit);
text1 = findViewById(R.id.text1);
mydata = FirebaseDatabase.getInstance();
mref = mydata.getReference();
submit.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String data = text1.getText().toString();
mref.setValue(data);
Toast.makeText(MainActivity.this, "data Inserted", Toast.LENGTH_SHORT).show();
);
【问题讨论】:
你能解释更多你想要达到的目标吗 【参考方案1】:首先创建一个如下的新类以便于处理。
public class User
public String phone, address;
public User()
public User(String phone, String address)
this.phone = phone;
this.address = address;
然后编辑您发布的代码。
public class MainActivity extends AppCompatActivity
Button submit;
//EditText text1;
// FirebaseDatabase mydata;
// DatabaseReference mref;
private EditText nameEdit, phoneNumberEdit, addressEdit;
public String name, phoneNumber, address;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
submit = findViewById(R.id.submit);
// text1 = findViewById(R.id.text1);
nameEdit = findViewById(R.id.nameEdit);
phoneNumberEdit = findViewById(R.id.phonenumberEdit);
addressEdit = findViewById(R.id.addressEdit);
// mydata = FirebaseDatabase.getInstance();
// mref = mydata.getReference();
submit.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// String data = text1.getText().toString();
// mref.setValue(data);
name = nameEdit.getText().toString().trim();
phoneNumber = phoneNumberEdit.getText().toString();
address = addressEdit.getText().toString().trim();
User user = new User(
phoneNumber,
address
);
FirebaseDatabase.getInstance().getReference(name)
.setValue(user);
// mref.setValue(user);
Toast.makeText(MainActivity.this, "data Inserted", Toast.LENGTH_SHORT).show();
);
会得到如下格式的数据。
您可以编辑用户类以获得您想要的格式。
【讨论】:
【参考方案2】:对于用户来说,最好的选择是使用Firebase Authentication。实现身份验证机制后,您将能够通过用户的唯一 UID 来区分用户。这意味着您可以在数据库中为每个用户创建一个单独的位置。虽然@ZahidIslam 的解决方案可行,但将用户名作为键存储在数据库中,这听起来可能不是最好的解决方案,因为 Firebase 实时数据库中的每个节点都可以被视为一个 Map,这是一种不允许重复的数据结构.因此,如果另一个具有相同“zahid”名称的用户加入您的应用,数据将被覆盖,我认为这不是您想要的。
因此考虑为您的用户创建一个 POJO 类,其最小声明如下所示:
class User
String uid, name;
要保存用户数据,只需在 Java 中使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
usersRef.child(uid).setValue(new User(uid, "Hamid Idrees")).addOnCompleteListener(/* ... /*);
Firebase 控制台中的结果将是:
Firebase-root
|
--- users
|
--- $uid
|
--- uid: "uidThatComesFromFirebaseUserObject"
|
--- name: "Hamid Idrees"
【讨论】:
嘿哈米德!我可以帮助您了解其他信息吗?如果您认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!以上是关于如何创建用户名,然后使用 Firebase 与用户插入/关联数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 AngularJS 和 Firebase 与用户传输项目
如何首先在Firebase中发送电子邮件验证,然后创建帐户?
如何使用 Firebase 实时数据库创建特定用户所有已保存帖子的列表?