【发布时间】:2020-07-06 15:30:14
【问题描述】:
我有一个界面,其中日期设置为使用 Firestore 时间戳。
export interface Album{
album_name: string,
album_date: firebase.firestore.FieldValue;
}
如果我想添加一个新项目,这非常好
this.albumsCollection.add({
album_name: "My Album",
album_date: firebase.firestore.FieldValue.serverTimestamp(),
})
从 firestore 获取相册文档
但是,在从 firestore 检索专辑 Document 时,如果我排除 album_date,下面的代码将正常工作。但是,我正在尝试使用 toDate 以便它出现在 Angular Material Date Picker 中
public getAlbum(): Observable<Album> {
this.itemDoc = this.afs.doc<Album>(`albums/1`);
return this.itemDoc.snapshotChanges()
.pipe(map(collectionDoc => {
const data = collectionDoc.payload.data();
return {
...data,
album_date: (data.album_date as firebase.firestore.Timestamp).toDate(),
} as Inspection;
}),
shareReplay()
);
}
上线收到的错误:album_date: (data.album_date as firebase.firestore.Timestamp).toDate(),如下:
类型转换'{专辑_日期:日期; }' 键入“Album”可能是一个错误,因为这两种类型都没有与另一种充分重叠。如果这是故意的,请先将表达式转换为“未知”。 属性“album”_date 的类型不兼容。 “日期”类型中缺少属性“isEqual”,但在“字段值”类型中是必需的。
当接口也配置为 firestore 时,在返回的 firestore 时间戳上使用“toDate”进行管理的最佳方法是什么?
【问题讨论】:
标签: angular typescript date google-cloud-firestore interface