Android 如何仅在属性为';Firestore中的空值是多少?
我有一个POJO:Android 如何仅在属性为';Firestore中的空值是多少?,android,firebase,kotlin,google-cloud-firestore,data-class,Android,Firebase,Kotlin,Google Cloud Firestore,Data Class,我有一个POJO: data class User( var uid: String? = null, @get:Exclude var name: String? = null ) : Serializable 如果我像这样构造一个对象: docRef.set(User("longUid", null)) 我在数据库中得到一个具有单个属性的对象。如果我使用: docRef.set(User("longUid", "John")) 我也有同样的行为。只有当name属
data class User(
var uid: String? = null,
@get:Exclude
var name: String? = null
) : Serializable
如果我像这样构造一个对象:
docRef.set(User("longUid", null))
我在数据库中得到一个具有单个属性的对象。如果我使用:
docRef.set(User("longUid", "John"))
我也有同样的行为。只有当name属性为空时,才有可能排除该属性吗?如果我传递一个实值,我希望对象包含这两个值。也许您可以从用户POJO中删除
@Exclude
。除了你的要求,你还需要它做什么?当您的用户
没有名称
属性时,您只需创建一个用户
对象名称属性:
val userA = User("longUid")
当您使用如上所示的
userA
设置文档时,Firestore中将不会为其设置name
字段。当您从Firestore获得userA
时,将toObject(Class)
函数应用到DocumentSnapshot
时,它应该返回一个没有名称的对象,因此新用户对象的name
将是null
也许您可以从用户POJO中删除@Exclude
。除了你的要求,你还需要它做什么?当您的用户
没有名称
属性时,您只需创建一个用户
对象名称属性:
val userA = User("longUid")
当您使用如上所示的
userA
设置文档时,Firestore中将不会为其设置name
字段。当您从Firestore获得userA
时,将toObject(Class)
函数应用到DocumentSnapshot
时,它应该返回一个没有名称的对象,因此新用户对象的名称将为null
您好,谢谢您的回答。我刚刚尝试了您的解决方案,但它不起作用,因为如果我只将id传递给构造函数,则名称为null。因此,我在数据库中得到一个id为的用户,name属性为null。我只想添加id,而不想添加带有null的名称。@LisDya您的用户数据类中可以有两个构造函数。如果我有两个构造函数,我调用带有两个的构造函数,我将null传递给名称,因此我在数据库中也得到null。您好,谢谢您的回答。我刚刚尝试了您的解决方案,但它不起作用,因为如果我只将id传递给构造函数,则名称为null。因此,我在数据库中得到一个id为的用户,name属性为null。我只希望添加id,而不希望添加带有null的名称。@LisDya您的用户数据类中可以有两个构造函数。如果我有两个构造函数,我调用带有两个的构造函数,我将null传递给名称,因此我在数据库中也会得到null。