在firebase上存储相同的字符串,如string1,string2,string3

时间:2017-10-23 00:35:26

标签: android firebase firebase-realtime-database

如何在firebase中存储相同的字符串?

我有一个关于firebase的课程,允许我添加学生,但我不知道如何创建student1,student2,student3。

这是代码:

 bSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!validateForm()) {
                return;
            }
            if (mAuth.getCurrentUser() != null) {
                String user_id = mAuth.getCurrentUser().getUid();
                final DatabaseReference add_student_db = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id).child("Alunos");
                final String anome = aNome.getText().toString();
                Map newPost = new HashMap();
                newPost.put("Aluno", anome);
                add_student_db.setValue(newPost);
            }else {
                Toast.makeText(AddStudent.this, "Erro ao Adicionar o Nome",
                        Toast.LENGTH_SHORT).show();
            }
        }
    });

“Aluno”是葡萄牙语学生。

我的孩子在“Alunos”停留,我希望它在“Alunos”,“Aluno1”,“Aluno2”内部创建......

感谢。

更新

我通过这样做解决了我的问题:

 if (mAuth.getCurrentUser() != null) {
                String user_id = mAuth.getCurrentUser().getUid();
                final String anome = aNome.getText().toString();
                if (filePath != null){
                    final StorageReference add_student_sr = FirebaseStorage.getInstance().getReference().child("Users").child(user_id).child("Alunos").child(anome);
                    StorageReference riversRef = add_student_sr.child(anome+"_profilePic.jpg");
                    riversRef.putFile(filePath)
                            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                    Toast.makeText(getApplicationContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
                                    String downloadUrl = taskSnapshot.getDownloadUrl().toString();
                                    String user_id = mAuth.getCurrentUser().getUid();
                                    final DatabaseReference add_student_db = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id).child("Alunos").child(anome);
                                    Map newPost = new HashMap();
                                    newPost.put("profilePic", downloadUrl);
                                    add_student_db.setValue(newPost);
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception exception) {

                                    Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
                                }
                            })
                            .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                                    double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();

                                }
                            });
                }

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是致电push()

当您致电push()时,Firebase会在该位置下创建一个新的唯一位置。然后,您可以在该新位置呼叫setValue

final DatabaseReference add_student_db = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id).child("Alunos");
final String anome = aNome.getText().toString();
add_student_db.push().setValue(anome);

每次运行此代码时,都会在/Users/$user_id/Alunos下使用"Aluno": "Name from aNome"创建一个新的子节点。