如何通过Angularfire或Firebase获取Firestore的serverTimestamp?
解决Firestore serverTimestamp 获取失败的问题(适配你的版本)
我刚帮你排查了这个问题,结合你使用的firebase@4.13.1和angularfire2@5.0.0-rc.6版本,报错Cannot read property 'FieldValue' of undefined的核心原因是Firestore模块未正确导入,或者调用路径不符合该版本的规范。下面给你两个针对性的解决方案:
方案一:使用AngularFire2提供的实例调用
在Angular项目中,更推荐通过AngularFirestore的实例来获取serverTimestamp,这样更符合Angular的依赖注入规范:
- 首先在组件/服务中注入
AngularFirestore:
import { Component } from '@angular/core'; import { AngularFirestore } from 'angularfire2/firestore'; @Component({ selector: 'app-your-component', templateUrl: './your-component.component.html' }) export class YourComponent { constructor(private afs: AngularFirestore) {} addDataWithTimestamp() { // 通过AngularFirestore实例获取Firestore引用,再调用serverTimestamp const timestamp = this.afs.firestore.FieldValue.serverTimestamp(); // 示例:添加带时间戳的数据到Firestore this.afs.collection('your-collection').add({ content: '测试内容', createdAt: timestamp }); } }
方案二:直接使用Firebase SDK调用
如果你想直接用Firebase原生SDK,必须确保额外导入Firestore模块,否则firebase.firestore会是undefined:
import * as firebase from 'firebase'; // 关键:必须导入Firestore模块,否则firebase.firestore属性不存在 import 'firebase/firestore'; // 在需要使用的方法中调用 getServerTimestamp() { const timestamp = firebase.firestore.FieldValue.serverTimestamp(); console.log(timestamp); }
额外注意事项
- 确保你的Angular项目已经正确初始化Firebase:在
app.module.ts中配置AngularFireModule.initializeApp(environment.firebase),并导入AngularFirestoreModule。 - 你的版本组合是兼容的,不需要升级版本,只要调整导入和调用方式就能解决问题。
内容的提问来源于stack exchange,提问作者Laker
相关产品推荐
相关产品推荐

