簡體   English   中英

將數據添加到 Firebase

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM