问题描述
我正在尝试将具有出生日期和激活日期的人的个人信息保存到 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 6Node: 8rxjs 6.3.3typescript 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 的时间戳?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!