web-dev-qa-db-fra.com

Comment obtenir le timestamp de Firestore

J'essaie d'obtenir l'horodatage d'un document créé par Firestore, mais voici ce que je comprends:

 enter image description here

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?

2
Paco Zevallos

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.

7
Papa Kojo

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() ],
  });
}
0
Paco Zevallos