如何通过Angularfire或firebase获取serverTimestamp

问题描述 投票:1回答:3

我找不到从firestore获取serverTimestamp的方法。无论是火店本身,还是角火。

我在解决方案中发现了很多github问题,但这些问题都不起作用。我猜那是因为版本不同?

"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",

我试过的代码替代方案:

import * as firebase from 'firebase';
firebase.firestore.FieldValue.serverTimestamp();

错误TypeError:无法读取未定义的属性“FieldValue”

import * as firebase from 'firebase';
firebase.database.ServerValue.TIMESTAMP;

错误TypeError:无法读取未定义的属性“ServerValue”

constructor( private afs: AngularFirestore ) { }
this.afs.firestore.FieldValue.serverTimestamp();

“FirebaseFirestore”类型中不存在“FieldValue”属性。

angular angularfire2
3个回答
3
投票

我在我的项目中有这个:

import { AngularFirestore } from 'angularfire2/firestore';
import { CollectionReference, Query } from '@firebase/firestore-types'; // Not usefull for your problem
import * as firebase from 'firebase';

@Injectable()
export class MyService {

  constructor(private db: AngularFirestore) {
      console.log("firebase.firestore.FieldValue.serverTimestamp()");
      console.log(firebase.firestore.FieldValue.serverTimestamp());
  }
}

在我的包裹中:

"firebase": "^4.12.1",
"angularfire2": "^5.0.0-rc.5-next"

我在packages.json文件中没有这个:

“@火力/应用程序”


2
投票

做的只是:

import * as firebase from 'firebase';

进口所有的firebase模块,这不是一个好的生产实践。最好的做法是使用像这样的裸导入:

import * as firebase from 'firebase/app'; 
import 'firebase/firestore';

这只会在您的应用中导入Firestore模块。然后你可以这样做:

get timestamp() {
return firebase.firestore.FieldValue.serverTimestamp();
};

1
投票

最后帮助卸载所有firebase相关的东西,正如我在我的问题中提到的那样:

"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",

并再次运行npm install firebase angularfire2 --save

这给了我:

"angularfire2": "^5.0.0-rc.7",
"firebase": "^5.0.1",

这解决了我所有的问题。

导入firebase为:

import * as firebase from 'firebase';

时间戳代码本身:

get timestamp() {
  return firebase.firestore.FieldValue.serverTimestamp();
}
© www.soinside.com 2019 - 2024. All rights reserved.