Pac*_*los 3 firebase typescript angularfire2 angular google-cloud-firestore
我正在尝试获取我在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;
}
Run Code Online (Sandbox Code Playgroud)
myComponent.ts
ngOnInit() {
const domiciliarios = this.fs.getDomiciliarios()
.subscribe(data => this.dataSource.data = data, date => date);
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
如果我之前创建了时间戳,我该如何打印该时间戳?
Ren*_*nec 14
我认为您使用FieldValue.serverTimestamp()了错误的方式:正如文档所述,firebase.firestore.FieldValue方法返回“在使用set() 或 update()编写文档字段时可以使用的值”。(参见https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue)
您serverTimestamp()在读取数据时正在使用该方法。
正如您在问题末尾提到的那样,您应该在数据库中创建记录时使用它。
编辑:执行以下操作:
const timestamp = firebase.firestore.FieldValue.serverTimestamp();
docRef.update({ updatedAt: timestamp });
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样查询
collectionRef.orderBy('updatedAt').get()
.then(snapshot => {
snapshot.forEach(doc => {
...
});
})
.catch(err => {
console.log('Error getting documents', err);
});
Run Code Online (Sandbox Code Playgroud)
上面的代码是纯 JavaScript,您可以将其调整为 angular 和 type 脚本,但原理是相同的。
Pap*_*ojo 11
如果你想要firebase.firestore.FieldValue.serverTimestamp()你可以使用的日期值.toDate().请参阅FireStore Timesteamp.在您的情况下,它将domiciliario.date.toDate()在您的模板中.
Rua*_*uan 11
如果您希望当前日期作为时间戳,您可以使用以下内容
对于 Firebase 函数
import admin = require('firebase-admin');
const todayAsTimestamp = admin.firestore.Timestamp.now()
Run Code Online (Sandbox Code Playgroud)
对于本地项目
import { Timestamp } from '@google-cloud/firestore';
const myTimestampAsDate = Timestamp.now()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19450 次 |
| 最近记录: |