如何通过Angularfire或firebase获取serverTimestamp

时间:2018-05-08 13:56:36

标签: angular angularfire2

我无法找到从firestore获取serverTimestamp的方法。可以使用firestore本身,也可以使用angularfire。

我发现解决方案存在许多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();
  

错误类型错误:无法读取属性' FieldValue'未定义的

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

错误类型错误:无法读取属性' ServerValue'未定义的

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

Property' FieldValue'类型' FirebaseFirestore'。

上不存在

7 个答案:

答案 0 :(得分:5)

导入

import firebase from 'firebase/app';

使用

firebase.firestore.FieldValue.serverTimestamp();

答案 1 :(得分:4)

自 firebase 8.0.0 起,在如何导入 firebase Release Notes

方面发生了重大变化

导入之前

import * as firebase from 'firebase/app'

但是现在,您应该使用

导入
import firebase from 'firebase/app'

然后你仍然应该只导入 firestore 来访问服务器时间戳

import firebase from 'firebase/app'
import 'firebase/firestore'

并在您的应用中使用

firebase.firestore.FieldValue.serverTimestamp()

答案 2 :(得分: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文件中没有这个:

  

" @火力/应用"

答案 3 :(得分:2)

只做:

import * as firebase from 'firebase';

导入所有Firebase模块,这不是生产的好习惯。 最佳做法是像这样使用裸导入:

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

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

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

答案 4 :(得分: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();
}

答案 5 :(得分:0)

我解决了这种形式:

进口import { AngularFirestore } from '@angular/fire/firestore';

代码:

constructor(private db: AngularFirestore) {}

private getTimestamp(): Object {
    return this.db.firestore['_firebaseApp'].firebase_.firestore.FieldValue.serverTimestamp();
}

依赖项:

  "@angular/fire": "^5.3.0",
  "firebase": "^7.7.0",

答案 6 :(得分:0)

签出这个

  1. 从“ firebase / app”导入Firestore ## import {firestore};
  2. 获取serverTimestamp ## createdAt = firestore.FieldValue.serverTimestamp();

Angular Firestore - serverTimestamp