java - 如何在 Firebase 实时数据库中的特定子树中推送值

标签 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 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”是我要为其添加值的子树。 enter image description here

目前,当我使用它时,它将覆盖我在 Firebase 数据库中“主要”子树中的所有值。我该如何更改它,以便它不会覆盖我的“主”子树,而只是在其下添加另一个具有值的名称。

最佳答案

How do I change this so that it doesn't override my "main" child tree, but just add another name with value under it.

您可以使用 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

关于java - 如何在 Firebase 实时数据库中的特定子树中推送值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59207051/

相关文章:

android - 在 Android Studio 中未修改的新创建项目中,工具栏和状态栏在选项卡式 Activity 中重叠

android - Firebase 在检查数据是否存在时始终为真

Firebase:将项目中定义的不同注册文本参数(名称,类型)的数量减少到20

java - 按值复制 Java 列表

java - switch 语句的替代方案

java - 中级流操作未按计数进行评估

java - 这种 AffineTransform 旋转方法是如何工作的?

Android 布局 - 具有相同位置的 UI 对象

android - 强制关闭 mapController?

java - 使用 setIndexedQuery 获取索引数据,其中索引不是路径末尾