java - Cloud Firestore 中自定义对象下的字段具有空值。如何避免这种情况?

标签 java android firebase google-cloud-firestore

我有以下模型类:

public class UserModel {
    private String userEmail, userName;

    public UserModel() {}

    public UserModel(String userEmail) {
        this.userEmail = userEmail;
    }

    public UserModel(String userEmail, String userName) {
        this.userEmail = userEmail;
        this.userName = userName;
    }

    //setters and getters
}

如果我使用带有两个参数的构造函数,则两个字段都会正确填充。如果我使用仅带有一个参数的构造函数,则仅填充第一个字段,第二个字段的值为 null。在 Firebase Realtime 数据库中,如果某个字段的值为 null,则该字段根本不存在于数据库中。

如何排除要添加到 Cloud Firestore 中的 null 值的字段?如果没有办法,这些值的存在是否会以某种方式影响数据库?

这是我的文档的样子:

enter image description here

最佳答案

如果您想确保在将文档写入 Firestore 时永远不存在 null 值,您可以使用 Map 并仅使用不包含 null 的字段填充它:

UserModel model = ...
HashMap<String, Object> map = new HashMap<>();
String userEmail = model.getUserEmail()
if (userEmail != null) {
    map.put("userEmail", userEmail);
}
// etc for other fields...

FirebaseFirestore.getInstance().document(...).set(map);

关于java - Cloud Firestore 中自定义对象下的字段具有空值。如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270150/

相关文章:

android - 在 Android 的 Scrollview 中使用约束布局是个好主意吗?

java - Android线程问题(线程在后台运行)

javascript - Firestore 规则 - 动态路径

java - Android/FireStore QuerySnapshot 转换为 CustomObject

java - 将正则表达式与replaceAll一起使用

java - 在浏览器沙箱中运行时,签名的 Java 小程序是否可以访问 USB 外围设备?

java - 如何使用 java-openal 处理音频 (wav)

java - Android 数据库 EditText NumberSigned

javascript - 如何在 firestore 中组合文档 ID 和值

android - Firebase setValue 没有创建唯一的子节点?