我试图获取我在firestore中创建的文档的时间戳,但我得到的是这样的:
我的服务.ts
getDomiciliarios() {
this.domiciliarios = this.afs.collection('domiciliarios').snapshotChanges().map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as Domiciliario;
const id = a.payload.doc.id;
const date = firebase.firestore.FieldValue.serverTimestamp();
return { id, ...data, date };
});
});
return this.domiciliarios;
}
我的组件.ts
ngOnInit() {
const domiciliarios = this.fs.getDomiciliarios()
.subscribe(data => this.dataSource.data = data, date => date);
}
我的组件.html
<ng-container matColumnDef="fecha">
<mat-header-cell *matHeaderCellDef mat-sort-header> Fecha </mat-header-cell>
<mat-cell *matCellDef="let domiciliario"> {{ domiciliario.date }} </mat-cell>
</ng-container>
我应该如何打印那个时间戳,我应该已经创建了它吗?
4条答案
按热度按时间lymgl2op1#
如果你想要
firebase.firestore.FieldValue.serverTimestamp()
的日期值,你可以使用.toDate()
。参见FireStore Timesteamp。在你的例子中,它在你的模板中是domiciliario.date.toDate()
。sz81bmfz2#
如果要将当前日期作为时间戳,可以使用以下命令
用于Firebase功能
用于当地项目
i2loujxw3#
我认为您使用
FieldValue.serverTimestamp()
的方式是错误的:如文档所述,firebase.firestore.FieldValue
方法返回“当用set()或update()写入文档字段时可以使用的值"。(参见https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue)阅读数据时使用的是
serverTimestamp()
方法。正如您在问题末尾提到的,您在数据库中创建记录时应该使用它。
编辑:执行以下操作:
然后,您可以进行如下查询
m3eecexj4#
感谢@Renaud,他强调了我在哪里实现时间戳,应该是在Firestore中创建记录的时候。在我的例子中,我正在使用一个formGroup,那么代码看起来应该是这样的:
这个替代方法也可以工作,但请记住,它是客户端计算机(用户的浏览器)的当前时间。