Android 如何仅在属性为';Firestore中的空值是多少?

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属

我有一个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属性为空时,才有可能排除该属性吗?如果我传递一个实值,我希望对象包含这两个值。

也许您可以从用户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。