使用@angular/fire@6.0.3无法访问firebase.firestore.FieldValue.serverTimestamp()

使用@angular/fire@6.0.3无法访问firebase.firestore.FieldValue.serverTimestamp(),angular,ionic-framework,google-cloud-firestore,Angular,Ionic Framework,Google Cloud Firestore,我一直在尝试将时间戳字段添加到我的firestore文档中 我还分享了一个PDF与相关的代码 项目环境为爱奥尼亚6.12.0 正在尝试访问Firestore.FieldValue.serverTimestamp() firestore可访问后的实际使用情况: import { Injectable } from '@angular/core'; import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/fi

我一直在尝试将时间戳字段添加到我的firestore文档中

我还分享了一个PDF与相关的代码

项目环境为爱奥尼亚6.12.0

正在尝试访问Firestore.FieldValue.serverTimestamp()

firestore可访问后的实际使用情况:

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
    });
  }
}
从'@angular/core'导入{Injectable};
从'@angular/fire/firestore'导入{AngularFirestore,AngularFirestoreDocument};
从“firebase”导入*作为firebase;
@注射的({
providedIn:'根'
})
类型DocPredicate=string | AngularFirestoreDocument;
导出类服务{
构造函数(专用afs:AngularFirestore){}
doc(ref:DocPredicate):AngularFirestoreDocument{
返回typeof ref==“string”?this.afs.doc(ref):ref;
}
timestamp():任何{
返回firebase.firestore.FieldValue.serverTimestamp();
}
集合(ref:DocPredicate,data:any){
const timestamp=this.timestamp;
返回此.doc(ref).set({
…数据,
更新日期:时间戳,
createdAt:时间戳
});
}
}
我的节点模块列表: ├── @角度开发套件/构建-angular@0.1000.8 ├── @棱角的/cli@10.0.8 ├── @棱角的/common@10.0.14 ├── @角度/编译器-cli@10.0.14 ├── @棱角的/compiler@10.0.14 ├── @棱角的/core@10.0.14 ├── @棱角的/fire@6.0.3 ├── @棱角的/forms@10.0.14 ├── @角度/语言-service@10.0.14 ├── @角度/平台浏览器-dynamic@10.0.14 ├── @角度/平台-browser@10.0.14 ├── @棱角的/router@10.0.14 ├── @电容器/android@2.4.2 ├── @电容器/cli@2.4.2 ├── @电容器/core@2.4.2 ├── @电容器/ios@2.4.2 ├── @离子原生/core@5.29.0 ├── @离子原生/飞溅-screen@5.29.0 ├── @离子本机/状态-bar@5.29.0 ├── @离子型/角型-toolkit@2.3.3 ├── @离子的/angular@5.4.1 ├── @类型/jasmine@3.5.14 ├── @类型/jasminewd2@2.0.8 ├── @类型/node@12.19.1 ├── codelyzer@6.0.1 ├── firebase@7.24.0 ├── 茉莉花-core@3.5.0 ├── 茉莉花-reporter@5.0.2 ├── 卡玛铬-launcher@3.1.0 ├── 因果报应报道伊斯坦布尔-reporter@3.0.3 ├── 卡玛茉莉花-reporter@1.5.4 ├── 业力-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
└── 区js@0.10.3

您可以从firestore获得时间戳:

import { firestore } from 'firebase';

// ...

const timestamp = firestore.Timestamp.now();

感谢卢卡斯让我走上了正确的道路

从“firebase”导入{firestore}

我收到了以下警告:

看起来您正在使用Firebase JS SDK的开发版本。 将Firebase应用程序部署到生产环境时,建议只导入 您打算使用的单个SDK组件

对于模块构建,可以通过以下方式获得 (替换为组件的名称-即身份验证、数据库等):

打字稿:

import * as firebase from 'firebase/app';
import 'firebase/<PACKAGE>';
功能:

getTimestamp() {
  return firebase.firestore.Timestamp.now();
}
乡亲们:有陷阱

It does not work with @angular/fire 6.0.4 + firebase 8.0.0
It works with @angular/fire 6.0.3 + firebase 7.24.0

再次感谢Lucas。

Lucas,我明白了:看起来您正在使用Firebase JS SDK的开发版本。将Firebase应用程序部署到生产环境时,建议只导入您打算使用的单个SDK组件。对于模块构建,可通过以下方式使用(替换为组件名称-即身份验证、数据库等):Typescript:import*作为firebase从“firebase/app”导入;导入“firebase/”;------我从你的建议中得到了结果。警告有问题吗?Lucas,你知道如何使用@angular/fire 6.0.4和firebasae 8.0.0访问警告吗
getTimestamp() {
  return firebase.firestore.Timestamp.now();
}
It does not work with @angular/fire 6.0.4 + firebase 8.0.0
It works with @angular/fire 6.0.3 + firebase 7.24.0