簡體   English   中英

如何在 Firebase 實時數據庫中的特定子樹中推送值

[英]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();
                                    }
                                });

                            }
                        });
                    }
                });
            }
        }
    }

子樹“main”是我想要添加值的子樹。 在此處輸入圖片說明

目前,當我使用它時,它將覆蓋我在 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();
                                    }
                                });

                            }
                        });
                    }
                });
            }
        }
    }

更多信息https://stackoverflow.com/a/41296760/9315408

您需要找到要更新的特定密鑰。

imageStore.child("cinta").setValue("value")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM