I have been trying to add timestamp field to my firestore documents.
I am also sharing a PDF with relevant code.
The project environment is Ionic 6.12.0.
Trying to access Firestore.FieldValue.serverTimestamp()
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
import {firebase} from '@firebase/app';
@Injectable({
providedIn: 'root'
})
export class FireTimestampService {
constructor(private afs: AngularFirestore) { }
timestamp(): any {
return this.afs.FieldValue.serverTimestamp();
}
timestamp2(): any {
return firebase.firestore.FieldValue.serverTimestamp();
}
}
Actual Usage once firestore is accessible:
import { Injectable } from '@angular/core';
import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';
import * as firebase from 'firebase';
@Injectable({
providedIn: 'root'
})
type DocPredicate<T> = string | AngularFirestoreDocument<T>;
export class FireTimestampService {
constructor(private afs: AngularFirestore) { }
doc<T>(ref: DocPredicate<T>): AngularFirestoreDocument<T> {
return typeof ref === 'string' ? this.afs.doc<T>(ref) : ref;
}
timestamp(): any {
return firebase.firestore.FieldValue.serverTimestamp();
}
set<T>(ref: DocPredicate<T>, data: any ) {
const timestamp = this.timestamp;
return this.doc(ref).set({
...data,
updatedAt: timestamp,
createdAt: timestamp
});
}
}
My list of node-modules: ├── @angular-devkit/build-angular@0.1000.8 ├── @angular/cli@10.0.8 ├── @angular/common@10.0.14 ├── @angular/compiler-cli@10.0.14 ├── @angular/compiler@10.0.14 ├── @angular/core@10.0.14 ├── @angular/fire@6.0.3 ├── @angular/forms@10.0.14 ├── @angular/language-service@10.0.14 ├── @angular/platform-browser-dynamic@10.0.14 ├── @angular/platform-browser@10.0.14 ├── @angular/router@10.0.14 ├── @capacitor/android@2.4.2 ├── @capacitor/cli@2.4.2 ├── @capacitor/core@2.4.2 ├── @capacitor/ios@2.4.2 ├── @ionic-native/core@5.29.0 ├── @ionic-native/splash-screen@5.29.0 ├── @ionic-native/status-bar@5.29.0 ├── @ionic/angular-toolkit@2.3.3 ├── @ionic/angular@5.4.1 ├── @types/jasmine@3.5.14 ├── @types/jasminewd2@2.0.8 ├── @types/node@12.19.1 ├── codelyzer@6.0.1 ├── firebase@7.24.0 ├── jasmine-core@3.5.0 ├── jasmine-spec-reporter@5.0.2 ├── karma-chrome-launcher@3.1.0 ├── karma-coverage-istanbul-reporter@3.0.3 ├── karma-jasmine-html-reporter@1.5.4 ├── karma-jasmine@3.3.1 ├── karma@5.0.9 ├── protractor@7.0.0 ├── rxjs@6.5.5 ├── ts-node@8.3.0 ├── tslib@2.0.3 ├── tslint@6.1.3 ├── typescript@3.9.7 └── zone.js@0.10.3