You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Firestore文档添加ServerTimestamp失败问题求助

问题排查与解决:Firestore添加@ServerTimestamp后无法写入文档

问题根源

Firestore的@ServerTimestamp注解仅兼容**java.util.Date或com.google.firebase.Timestamp**类型,你当前使用的java.sql.Date不在支持列表中。这种类型不匹配会导致Firestore无法正确序列化该字段,最终出现“无异常但写入失败”的静默错误。

解决方案

将banner_timeStamp字段的类型替换为Firestore支持的类型即可,具体步骤如下:

方案1:使用java.util.Date

修改数据类的导入和字段类型:

import com.google.firebase.firestore.ServerTimestamp
import java.util.Date // 替换原java.sql.Date导入

data class Banner(
 var banner_id:String? = null,
 var banner_title:String? = null,
 var banner_offer:String? = null,
 var banner_image:String? = null,
 var banner_priority:String? = null,
 var banner_tags:List<String>? = null,
 var banner_product_tags:List<String>? = null,
 @ServerTimestamp
 var banner_timeStamp: Date? = null // 类型改为java.util.Date
)

方案2:使用Firebase原生Timestamp

如果需要更精确的时间控制,可使用Firebase提供的Timestamp类型:

import com.google.firebase.firestore.ServerTimestamp
import com.google.firebase.Timestamp // 导入Firebase Timestamp

data class Banner(
 var banner_id:String? = null,
 var banner_title:String? = null,
 var banner_offer:String? = null,
 var banner_image:String? = null,
 var banner_priority:String? = null,
 var banner_tags:List<String>? = null,
 var banner_product_tags:List<String>? = null,
 @ServerTimestamp
 var banner_timeStamp: Timestamp? = null // 使用Firebase Timestamp
)

额外说明

你当前的实现代码中,创建bannerData时未给banner_timeStamp赋值的做法是正确的——只需保持该字段为null,Firestore会在写入文档时自动填充服务器端生成的时间戳。

内容的提问来源于stack exchange,提问作者Shiva s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:45:45