Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save date in Angular as a timestamp to Firestore?

I am trying to save personal info of person with birth date and activation date into Firestore database in Angular;

However, passing object with Date() type fields the dates are saved as a string:

this.treatment.activationDate = new Date();
// gives such result in firestore with string type
// activationDate: "2018-11-16T09:48:51.137Z"

Also tried to use server timestamp, but the following method does not return valid value:

firebase.firestore.FieldValue.serverTimestamp()

Result in Firestore (not allowed to upload images sorry :) ):

activationDate: (map)
     _methodName: FieldValue.serverTimestamp 

However, this method can not provide me a timestamp for custom dates (birthDate for example) So what is the best way to save date as a timestamp object in firestore using angular?

.....
import  * as firebase from 'firebase';
.....
export class AddPatientComponent implements OnInit { 
......

this.treatment.activationDate = new Date();
  //firebase.firestore.FieldValue.serverTimestamp();
  console.log("timestamp: ", this.treatment.activationDate,                  firebase.firestore.FieldValue.serverTimestamp()); 
  this.patientService.savePatient(this.patient, this.treatment,   this.courseMeds);

And a model:

export class CourseMed{
  amountPerDay: number;
  atc: String;
  name: String;
  days: number;
  dosage: number;
  form: String;
  method: String;
  periodicity: number;
  takeTimes: string[];
  used: number;
  takenCount: {};

angular 6 Node: 8 rxjs 6.3.3 typescript 2.9.2

like image 559
Daulet Issatayev Avatar asked Nov 16 '18 10:11

Daulet Issatayev


People also ask

How do I change firestore timestamp to date?

To convert a Firestore date or timestamp to a JavaScript Date, we use firebase. firestore. Timestamp. fromDate to convert the a date to a Firestore timestamp.

Does firestore have timestamp?

firestore. Timestamp. A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one.

How does firestore store date?

Date and time - Chronological - When stored in Cloud Firestore, precise only to microseconds; any additional precision is rounded down.


Video Answer


1 Answers

If you want in your Cloud Firestore database the date value of:

firebase.firestore.FieldValue.serverTimestamp()

You should use a call to .toDate() function. Please checkout FireStore Timestamp from the official documentation for more information. In your particular case, you should use the following call:

treatment.activationDate.toDate()

This change was added in Firebase JS SDK v4.13.0, where JavaScript Date objects should be saved of type Timestamp.

like image 187
Alex Mamo Avatar answered Sep 28 '22 14:09

Alex Mamo