Firestore获取Javascript日期而不是时间戳

时间:2018-05-26 02:47:54

标签: angular firebase google-cloud-firestore angular6

我使用Angular 6Firestore开发了一个应用程序,我将日期保存为Javascript的Date对象。问题是当我执行snapshotChanges()时,它返回Unix Timestamp而不是我数据库中的Date对象。

我在线搜索了解决方案(thisand 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.

任何建议都会很棒。

2 个答案:

答案 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即可。