gpt4 book ai didi

java - 如何更新 Firebase JSON 节点中的特定字段

转载 作者:行者123 更新时间:2023-12-02 11:38:43 26 4
gpt4 key购买 nike

我正在开发地理位置 Android 应用程序,该应用程序使用 Firebase 作为后端和数据库。

这是我的数据库中的数据结构。 enter image description here

这是 mu User.java 类。

@IgnoreExtraProperties
public class User {

public String fullName;
public String email;
public String longitude;
public String latitude;

public String getLongitude() {
return longitude;
}

public void setLongitude(String longitude) {
this.longitude = longitude;
}

public String getLatitude() {
return latitude;
}

public void setLatitude(String latitude) {
this.latitude = latitude;
}


public User() {

}

public String getFullName() {
return fullName;
}

public void setFullName(String fullName) {
this.fullName = fullName;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

我想做什么。

  • 我希望我的应用程序能够更新我目前正在使用的用户的 JSON 节点。这些是图片上显示的经度和纬度两个字段。

我现在做得怎么样?

  • 我现在从 User.java 类创建用户,然后通过 setLongitude 和 setLatidude 添加数据,然后调用 setValue 方法。
  • 这是为其截取的代码。

    dbRef = FirebaseDatabase.getInstance().getReference();
    mAuth = FirebaseAuth.getInstance();
    User user = new User();
    String currentUserId = mAuth.getCurrentUser().getUid();
    user.setLatitude(String.valueOf(userLocation.latitude));
    user.setLongitude(String.valueOf(userLocation.longitude));
    dbRef.child("users").child(currentUserId).setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
    if (task.isSuccessful()) {
    Log.i("Info", "updateUser:success");
    } else {
    Log.i("Info", "updateUser:failure");
    }
    }
    });

出了什么问题?

  • 目前我没有更新数据库,而是删除了字段,然后添加了经度和纬度字段。上图中也显示了这一点。

最佳答案

问题是您在设置纬度和经度时没有设置 fullName 和 email,那么这些字段将为空。 setValue() 将删除旧对象并添加字段为 null 的新对象。您应该执行 updateChildren 而不是 setValue

Map<String, Object> latLong = new HashMap<>();
latLong.put("latitude", "123");
latLong.put("longitude", "123");

dbRef.child("users").child(currentUserId).updateChildren(latLong).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.i("Info", "updateUser:success");
} else {
Log.i("Info", "updateUser:failure");
}
}
});

如果您将电子邮件和全名与纬度和经度一起设置,您可以继续使用您的代码。

关于java - 如何更新 Firebase JSON 节点中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com