[英]Add data into firebase
我正在將用戶輸入到 firebase 中,例如:
private void Database(String mail, String password){
auth.createUserWithEmailAndPassword(mail, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("CreateUser", "createUserWithEmail:success");
showToast("User successfully created");
insertUserData();
} else {
// If sign in fails, display a message to the user.
Log.w("CreateUser", "createUserWithEmail:failure", task.getException());
showToast("Authentication failed. User exist!");
}
}
});
}
現在我想添加額外的用戶信息,這些信息將鏈接到上面調用insertUserData()的用戶上
我創建了如下所示的“用戶”類:
public class User {
private String name;
private String surname;
private String phone;
private String address;
private String country;
private String zip;
public User(){
}
public User (String mail, String surname, String phone, String address, String country, String zip){
this.name = name;
this.surname = surname;
this.phone = phone;
this.address = address;
this.country = country;
this.zip = zip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//...
//...
我的問題是我應該如何將額外的用戶數據插入到連接用戶的 firebase 中,我試圖在 firebase 中創建一個新的數據庫,如下所示:
在 Android Studio 中:
private void insertUserData(){
FirebaseUser username = auth.getCurrentUser();
String userId = username.getUid();
Firebase rootRef = new Firebase(MYURL);
Firebase userRef = rootRef.child("Users");
User user = new User();
user.setName("Test");
user.setSurname("Test");
userRef.child(userId).setValue(user);
}
但我不確定MYURL代表什么,我聽說它用於舊的 Firebase,我應該用新的東西交換它。
更新:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-database:16.0.6'
implementation 'com.google.firebase:firebase-firestore:21.3.1'
}
您使用的代碼用於實時數據庫,但問題中的圖片用於 firestore。 如果要使用 firestore,則必須執行以下操作:
Map<String, Object> userData = new HashMap<>();
userData.put("name", "john");
userData.put("address", "address");
userData.put("country", "USA");
db.collection("User").document("User")
.set(userData)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
在這里查看更多信息:
https://firebase.google.com/docs/firestore/manage-data/add-data
如果您已將 google-services.json 文件復制到您的項目中,那么您不必擔心MYURL我已經修改了您的insertUserData函數,該函數將用戶數據存儲到Firestore數據庫中
private void insertUserData(){
FirebaseUser username = FirebaseAuth.getInstance().getCurrentUser();
String userId = username.getUid();
User user = new User();
user.setName("Test");
user.setSurname("Test");
FirebaseFirestore.getInstance()
.collection("users")
.document(userId)
.set(user, SetOptions.merge());
}
如果您不希望刪除現有數據,請使用選項SetOptions.merge()
以下代碼將根據FirebaseAuth
提供的 uid 設置用戶
private void insertUserData(){
FirebaseUser user = auth.getCurrentUser();
String uid = user.getUid();
FirebaseFirestore db = FirebaseFirestore.getInstance();
Map<String, Object> user = new HashMap<>();
user.put("first", "Ada");
user.put("last", "Lovelace");
user.put("born", 1815);
// Add a new document with a generated ID
db.collection("users")
.document(uid)
.set(user);
}
僅使用 Firestore :
dependencies {
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-firestore:21.3.1'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.