java - 电子邮件作为firebase中的ID
问题描述
我可以像在 Firebase中那样使用用户的电子邮件,而不是使用push()
to generate吗?id
child(user)
id
我试过这个:
private void userData(String emai1, String pass, String bal) {
String id = emai1;
int balance=Integer.valueOf(String.valueOf(bal));
User user1 = new User(id,emai1,pass,balance);
databaseReference.child(id).setValue(user1);
}
用户等级:
public class User {
private String email;
private int balance;
private String password;
private String id;
public User( String id,String email, String password , int balance) {
this.email = email;
this.balance = balance;
this.password = password;
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
由于我使用了 firebase auth,因此用户已注册,但他的信息并未添加到 firebase 数据库中。
顺便说一句,在尝试此操作之前,我一直在使用push()
它id
并且一切正常,但我希望电子邮件作为id
生成新的id
(因为电子邮件无论如何都是独一无二的。)
解决方案
您不能使用电子邮件作为唯一键,因为它包含.
数据库中不允许的点。
由于您使用了 firebase 身份验证,因此只需使用用户唯一 ID 而不是push()
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userId=user.getUid();
这将为您提供 id,然后您也可以在数据库中使用它。
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users").child(userId);
ref.child("name").setValue("name_here");
ref.child("email").setValue("email_here");
然后你会有:
users
userId
name: name_here
email: email_here
也检查一下:
推荐阅读
- rest - Powershell 脚本不等待来自 Invoke-RestMethod cmdlet 的响应
- c# - 有没有办法按顺序对 sqlite PRAGMA foreign_key_list() 查询的结果进行排序,出现查询的表中的列?
- c# - 在 UITextInput 更改时更新 UILabel (Xamarin)
- testing - 关于编写场景(功能测试)的主要思想?
- html-select - 没有“IEnumerable”类型的 ViewData 项
' 有关键的'分支' - android - 每当更新数据时如何调用 Marker 的 ShowInfoWindow() Googlemap Clustering
- css - CSS 样式未反映在 reactapp 中
- php - 我不确定如何解决这个 Parse 错误:php 中的语法错误
- php - 只返回IP服务器
- apache-spark - 在火花结构化流中出错