如何将 Angular 中的日期保存为 Firestore 的时间戳? [英] How to save date in Angular as a timestamp to Firestore?

查看:28
本文介绍了如何将 Angular 中的日期保存为 Firestore 的时间戳?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将具有出生日期和激活日期的人的个人信息保存到 Angular 的 Firestore 数据库中;

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

但是,使用 Date() 类型字段传递对象,日期将保存为字符串:

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()

Firestore 中的结果(抱歉,不允许上传图片:)):

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

activationDate: (map)
     _methodName: FieldValue.serverTimestamp 

但是,此方法无法为我提供自定义日期的时间戳(例如birthDate)那么使用 angular 在 firestore 中将日期保存为时间戳对象的最佳方法是什么?

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);

还有一个模型:

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

角 6节点:8rxjs 6.3.3打字稿 2.9.2

angular 6 Node: 8 rxjs 6.3.3 typescript 2.9.2

推荐答案

如果您希望 Cloud Firestore 数据库中的日期值为:

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

firebase.firestore.FieldValue.serverTimestamp()

您应该调用 .toDate() 函数.请从官方文档中查看 FireStore Timestamp 以了解更多信息.在您的特定情况下,您应该使用以下调用:

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()

此更改已添加到 Firebase JS SDK v4.13.0,其中 JavaScript Date 对象应保存为 Timestamp 类型.

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

这篇关于如何将 Angular 中的日期保存为 Firestore 的时间戳?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆