[英]How to get the key value of a specific child in the Firebase Realtime database (Android Development)?
[英]How to push value in specific child tree in Firebase Realtime Database
我正在嘗試將帶有名稱的 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 數據庫中“主”子樹中的所有值。 如何更改它以使其不會覆蓋我的“主”子樹,而只是在其下添加另一個帶有值的名稱。
如何更改它以使其不會覆蓋我的“主”子樹,而只是在其下添加另一個帶有值的名稱。
您可以使用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
只是你只需要更新值。 對於更新值,請使用此代碼imageStore. updateChildren(hashMap)
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();
}
});
}
});
}
});
}
}
}
您需要找到要更新的特定密鑰。
即imageStore.child("cinta").setValue("value")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.