我无法找到从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'。
上不存在
答案 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)
签出这个