J'essaie d'obtenir l'horodatage d'un document créé par Firestore, mais voici ce que je comprends:
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>
Comment puis-je imprimer cet horodatage, dois-je l'avoir créé auparavant?
SI vous voulez la valeur de date de firebase.firestore.FieldValue.serverTimestamp()
, vous pouvez utiliser .toDate()
. Voir FireStore Timesteamp . Dans votre cas, ce sera domiciliario.date.toDate()
dans votre modèle.
Merci à @Renaud qui a mis l’accent sur le lieu où je mettais en œuvre l’horodatage, ce devrait être le cas lors de la création d’un enregistrement dans Firestore. Dans mon cas, je travaille avec un formGroup, le code ressemblerait à ceci:
forma: FormGroup;
constructor( fb: FormBuilder) {
this.forma = fb.group ({
field1: [ ''],
field2: [ ''],
...
myDate: [ firebase.firestore.FieldValue.serverTimestamp() ],
});
}
Cette alternative fonctionne également, mais rappelez-vous qu'il s'agit de l'heure actuelle de l'ordinateur du client (navigateur de l'utilisateur).
forma: FormGroup;
constructor( fb: FormBuilder) {
this.forma = fb.group ({
field1: [ ''],
field2: [ ''],
...
myDate: [ new Date() ],
});
}