我正在尝试获取我在firestore中创建的文档的时间戳,但我得到的是:
myService.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;
}
myComponent.ts
ngOnInit() {
const domiciliarios = this.fs.getDomiciliarios()
.subscribe(data => this.dataSource.data = data, date => date);
}
myComponent.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>
如果我之前创建过它,我该如何打印该时间戳?
答案 0 :(得分:8)
如果您想要firebase.firestore.FieldValue.serverTimestamp()
的日期值,可以使用.toDate()
。
见FireStore Timesteamp。在您的情况下,模板中的内容为domiciliario.date.toDate()
。
答案 1 :(得分:2)
我认为您使用的是firebase.firestore.FieldValue
错误的方式:正如文档所述,serverTimestamp()
方法返回“使用set()编写文档字段时可以使用的值或更新()“。
(见https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue)
您在阅读数据时使用const timestamp = firebase.firestore.FieldValue.serverTimestamp();
docRef.update({ updatedAt: timestamp });
方法。
当你在问题的最后提到时,你应该在数据库中创建时使用它。
编辑: 请按以下步骤操作:
collectionRef.orderBy('updatedAt').get()
.then(snapshot => {
snapshot.forEach(doc => {
...
});
})
.catch(err => {
console.log('Error getting documents', err);
});
然后您可以查询
class Sample1 {
private var test = ""
get() = field
set(value) {
field = value
}}
上面的代码是纯JavaScript,您可以将其改编为角度和类型脚本,但理念是相同的。
答案 2 :(得分:0)
感谢@Renaud强调我实施时间戳的位置,应该是在Firestore中创建记录时。在我的情况下,我正在使用formGroup,然后代码看起来像这样:
forma: FormGroup;
constructor( fb: FormBuilder) {
this.forma = fb.group ({
field1: [ ''],
field2: [ ''],
...
myDate: [ firebase.firestore.FieldValue.serverTimestamp() ],
});
}
此替代方案也有效,但请记住它是客户端计算机(用户浏览器)的当前时间。
forma: FormGroup;
constructor( fb: FormBuilder) {
this.forma = fb.group ({
field1: [ ''],
field2: [ ''],
...
myDate: [ new Date() ],
});
}
答案 3 :(得分:0)
如果您希望将当前日期作为时间戳记,则可以使用以下
import { Timestamp } from '@google-cloud/firestore';
const myTimeStampNow = Timestamp.now()
要从时间戳记获取日期,可以使用
const myTimestampAsDate = myTimeStampNow.toDate();