我正在尝试将具有名称的url上传到Firebase数据库中的特定树状子节点。
代码:
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数据库中“主”子树中的所有值。我该如何更改它,以使其不覆盖我的“主”子树,而只需在其下添加另一个带有值的名称即可。
答案 0 :(得分:2)
如何更改此设置,以免覆盖我的“主”子树,而只需在其下添加另一个带有值的名称。
您可以使用updateChildren()
方法:
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("food","all" );
mDatabase.updateChildren(childUpdates);
更多信息在这里:
https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields
答案 1 :(得分:1)
简单地说,您只需要更新价值即可。要获取更新值,请使用此代码imageStore. updateChildren(hashMap)
来更新值
或者您可以替换以下代码。
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();
}
});
}
});
}
});
}
}
}
答案 2 :(得分:1)
您需要找到一个指定密钥进行更新。
即imageStore.child("cinta").setValue("value")