更新null字段以映射Firestore

时间:2019-07-27 17:57:13

标签: android kotlin google-cloud-firestore

我有这样的对象

data class Task(var id: Int? = null,
 var cabinId: Int = 0,
 var startTime: DateTime,
 var endTime: DateTime? = null
)

当我编写文档时,它是完全正常的:

    db.collection("games").document(game.idForTitle)
        .set(game)
        .addOnSuccessListener { documentReference ->
            Log.d(TAG, "DocumentSnapshot written with ID: ${documentReference}")
        }
        .addOnFailureListener { e ->
            Log.w(TAG, "Error adding document", e)
        }

但是当我尝试更新endTime字段时会抛出:

java.lang.IllegalArgumentException:无效的数据。不支持的类型:org.joda.time.DateTime(在endTime字段中找到)

有趣的是,startTime字段被写入为map,但是endTime为null类型。

有人知道该怎么办吗?

1 个答案:

答案 0 :(得分:0)

  

有趣的是,startTime字段被写入为map,但是endTime为null类型。

endTimenull,因为它在构造函数中被初始化为null

var endTime: DateTime? = null

如果需要服务器时间戳,请将字段的类型更改为Date,使用注释,并保留该字段未初始化,如以下帖子中我的回答所述:

如果您需要更新字段,请确保该字段的类型为supported data types in Firestore之一。