在我的上下文中,存在可选值的可能性。
例如,在此数据库中,iVisperas
字段在多种情况下可以为空。我认为保留空字段是一种不好的做法(?)。
在我的代码中,我将快照映射到一个类。
我不想将字段 iVisperas
保留为 Firestore 中的空字段,但我不知道如何从模型类中确定该字段是否存在。
我如何才能实现这一目标。这是文档中我的模型类。实际上,在 getTituloVisperas 方法中,我检查字段 iVisperas 是否为空。如果我只想在包含数据时创建 iVisperas
字段,我如何将其管理到模型类中?
public class MetaLiturgia {
private String fecha;
private int tiempo;
private String semana;
private String mensaje;
private String salterio;
private int color;
private String meta;
private String titulo;
private String iVisperas;
private int weekDay;
public MetaLiturgia() {
}
public String getTituloVisperas() {
if (iVisperas.equals("")){
return titulo;
}else{
return iVisperas;
}
}
//...
}
最佳答案
For example, in this database the field iVisperas can be empty in multiple cases.
看到 MetaLiturgia
类中的所有字段都设置为私有(private),我假设您正在使用构造函数和公共(public) getter。如果您希望您的 iVisperas
属性不包含任何值,那么只需不在构造函数中实例化它或创建另一个没有它的构造函数。
If I want to create
iVisperas
field only when it contains data, how I can manage that into the model class?
在这种情况下,您应该使用 map
和update仅当您的 iVisperas
属性的值可用时才生成该文档。
I think is a bad practice to keep empty fields (?).
只要不需要,保留空字段就没有任何好处。请记住,每个属性都计入 1 MiB (1,048,576 bytes)文档的最大大小。
根据 Suhas Ch 的回答,还请注意,空的 String 类型的属性(""
)和包含 null
的属性占用相同的数量文档中的空间。
编辑:
另一种可能的解决方案是在模型 (MetaLiturgia) 类内部分配一个默认值,在本例中为 0
。
关于java - 如何管理 Firebase Firestore 中的可选值并避免数据库中出现空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59564230/