Firebase,更新特定字段

时间:2019-10-21 19:39:42

标签: java android firebase firebase-realtime-database

尝试在Firebase上更新当前信息的特定字段。

我最接近的是 https://www.programcreek.com/java-api-examples/?class=com.firebase.client.Firebase&method=updateChildren

但是我似乎无法弄清楚。

package com.example.updatefirebase;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    private DatabaseReference databaseReference;
    private FirebaseDatabase firebaseDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Connects to my database.
        databaseReference = FirebaseDatabase.getInstance().getReference("users");

        HashMap<String, String> userMap = new HashMap<>();
        userMap.put("name", "lol");
        userMap.put("image", "321321");
        userMap.put("image_thumbnail", "default");


        //Trying to write to root file.
       // databaseReference.setValue(userMap);

        Map<String, Object> mapaCompleto = new HashMap<>();
        mapaCompleto.put(lol, userMap);


        //Update firebase.
        databaseReference = FirebaseDatabase.getInstance().getReference("users").updateChildren(mapaCompleto);

    }
}

我想做的是我的databaseReference.setValue(userMap);

然后更新数据库中的特定位置。就像名字一样,从哈哈到乔伊,等等。

2 个答案:

答案 0 :(得分:0)

您可以使用updateChildren()

HashMap<String, Object> userMap = new HashMap<>();
userMap.put("name", "joey");
userMap.put("image", "321321");
userMap.put("image_thumbnail", "default");

databaseReference.updateChildren(userMap);

updateChildren()将更新特定字段,而不会覆盖其他子节点。

您可以在以下链接中找到更多信息:

https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields

答案 1 :(得分:-1)

发现编写起来更容易:

FirebaseDatabase.getInstance()。getReference(“ users”)。child(“ name”)。setValue(“ joey”);

由于我将不会放置这些信息,因此最终用户将用自己的东西填写我的数据库。

否则,我可能必须使用getter setter方法进行设置。

但是对于单个信息更改,到目前为止,这是最简单的,因为我确实知道该路径。