我使用Angular 6
和Firestore
开发了一个应用程序,我将日期保存为Javascript的Date
对象。问题是当我执行snapshotChanges()
时,它返回Unix Timestamp
而不是我数据库中的Date对象。
我在线搜索了解决方案(this,and this),并为Firestore找到了配置选项:
{ timestampsInSnapshots: false }
我试图在我的应用组件中应用此功能:
constructor(private _db: AngularFirestore) {
_db.firestore.settings({ timestampsInSnapshots: false });
}
但是我得到了错误:
Firestore has already been started and its settings can no longer be changed. You can only call settings() before calling any other methods on a Firestore object.
在调用snapshotChanges()
之前,我还尝试更改设置,但这对行为也没有任何影响。
注意:我也使用AngularFirestoreModule.enablePersistence()
更新
我尝试了this,它给了我这个错误:
@firebase/firestore: Firestore (5.0.3):
The behavior for Date objects stored in Firestore is going to change
AND YOUR APP MAY BREAK.
任何建议都会很棒。
答案 0 :(得分:0)
嗯,请尝试拨打_db.app.firestore().settings({})
,因为您正在进行广泛的更改/配置。既然您已经提到需要enablePersistence()
的离线支持,请尝试在这种情况下在组件中调用它,而不是根模块,但在调用settings()之后。
在您的组件中:
constructor(private _db: AngularFirestore) {
_db.app.firestore().settings({ timestampsInSnapshots: false });
_db.app.firestore().enablePersistence();
}
答案 1 :(得分:0)
通过将以下代码添加到我的app控件中,我能够实现所需的功能。
constructor(private _db: AngularFirestore) {
_db.firestore.settings({ timestampsInSnapshots: false });
_db.firestore.enablePersistence();
}
请记住,如果您打算使用上述代码,请不要AngularFirestoreModule.enablePersistence()
。只需添加AngularFirestoreModule
即可。