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
相关产品推荐
相关产品推荐

