Java 如何在Firebase实时数据库中推送特定子树中的值
我正在尝试将一个带有名称的url上载到Firebase数据库中的特定树子级 代码:Java 如何在Firebase实时数据库中推送特定子树中的值,java,android,firebase,firebase-realtime-database,hashmap,Java,Android,Firebase,Firebase Realtime Database,Hashmap,我正在尝试将一个带有名称的url上载到Firebase数据库中的特定树子级 代码: public void UploadData(View view){ Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/gif"); startActivityForResult(intent,ImageBack); protected void onActi
public void UploadData(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/gif");
startActivityForResult(intent,ImageBack);
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
source2 = textView.getText().toString();
if(requestCode == SELECT_VIDEO){
if(resultCode == RESULT_OK){
Uri ImageData = data.getData();
final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());
Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();
Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(source2, String.valueOf(uri));
imageStore.setValue(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
}
});
}
});
}
});
}
}
}
主子树是我要向其添加值的子树。
当前,当我使用它时,它将覆盖Firebase数据库中主子树中的所有值。如何更改它,使其不会覆盖我的主子树,而只需添加另一个名称及其下的值。只需更新值即可。对于更新值,请使用此代码imageStore。updateChildrenhashMapto更新值 或者您可以替换下面的代码
public void UploadData(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/gif");
startActivityForResult(intent,ImageBack);
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
source2 = textView.getText().toString();
if(requestCode == SELECT_VIDEO){
if(resultCode == RESULT_OK){
Uri ImageData = data.getData();
final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());
Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();
Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(source2, String.valueOf(uri));
imageStore. updateChildren(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
}
});
}
});
}
});
}
}
}
有关更多信息,只需更新值即可。对于更新值,请使用此代码imageStore。updateChildrenhashMapto更新值 或者您可以替换下面的代码
public void UploadData(View view){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/gif");
startActivityForResult(intent,ImageBack);
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
source2 = textView.getText().toString();
if(requestCode == SELECT_VIDEO){
if(resultCode == RESULT_OK){
Uri ImageData = data.getData();
final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());
Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();
Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(source2, String.valueOf(uri));
imageStore. updateChildren(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
}
});
}
});
}
});
}
}
}
更多信息
我如何更改它,使其不会覆盖我的主子树,而只是添加另一个名称及其下的值
您可以使用updateChildren方法:
更多信息请点击此处:
我如何更改它,使其不会覆盖我的主子树,而只是添加另一个名称及其下的值
您可以使用updateChildren方法:
更多信息请点击此处:
您需要找到要更新的指定键
i、 e imageStore.childcinta.setValuevalue您需要找到要更新的指定键
i、 e imageStore.childcinta.setValuevaluefirebase中没有带databaseReference.updateValue的方法firebase中没有带databaseReference.updateValue的方法