Как получить временную метку пожарного магазина - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь получить метку времени документа, который я создал в firestore, но получаю вот что:

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>

Как мне распечатать эту временную метку, если бы я ее предварительно создал?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Спасибо @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() ],
  });
}
0 голосов
/ 18 июня 2018

Если вам нужно значение даты firebase.firestore.FieldValue.serverTimestamp(), вы можете использовать .toDate(). См. FireStore Timesteamp . В вашем случае это будет domiciliario.date.toDate() в вашем шаблоне.

0 голосов
/ 25 апреля 2018

Я думаю, что вы используете 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 });

Затем вы можете запросить как

collectionRef.orderBy('updatedAt').get()
    .then(snapshot => {
        snapshot.forEach(doc => {
            ...
        });
    })
    .catch(err => {
        console.log('Error getting documents', err);
    });

Код вышеэто чистый JavaScript, и вы можете адаптировать его к угловому и текстовому сценарию, но философия та же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...