如何在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();
}
});
}
答案 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"
创建一个新的子节点。