我注意到我一直在下面
警告
,每次运行应用程序代码时:
w/firestore:(0.6.6-dev)【firestore】:存储在firestore中的java.util.date对象的行为将发生变化,您的应用程序可能会中断。
要隐藏此警告并确保应用程序不会中断,您需要在调用任何其他云FireStore方法之前向应用程序添加以下代码:
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
.setTimestampsInSnapshotsEnabled(true)
.build();
firestore.setFirestoreSettings(settings);
通过这种更改,存储在云FireStore中的时间戳将被读取回com.google.firebase.timestamp对象,而不是系统java.util.date对象。因此,您还需要更新期望java.util.date而期望时间戳的代码。例如:
java.util.Date date = snapshot.getDate("created_at");
Timestamp timestamp = snapshot.getTimestamp("created_at");
java.util.Date date = timestamp.toDate();
启用新行为时,请审核java.util.date的所有现有用法。在将来的版本中,行为将更改为新行为,因此如果不遵循这些步骤,应用程序可能会中断。
如果您从documentsnapshot中单独获取每个文档对象,则带有警告的示例建议了转换代码的最佳方法。
我的问题
这是-如果你用
.toObject()
方法在documentSnapshot上直接从中获取pojo,在这种情况下,是否有更新代码/数据模型的建议/优化方法?
因为以下情况
java.util.Date
当前已在应用程序中使用-
-
因为有很多地方在应用程序中使用日期对象。
-
日期也是一些地图数据类型对象(例如
Map<String, Date>
)。如何在没有太多主要更改的情况下,在DocumentSnapshot中处理此类数据对象的代码转换?
我已经想到的一种方法是更新pojo
日期类型
字段到
com.google.firebase.Timestamp
以及在
Map<K, V>
实施。之后,通过添加
.toDate()
在时间戳字段调用之后。
但这种方式似乎没有优化
.