Lak*_*ker 1 angularfire2 angular
我找不到从Firestore获取serverTimestamp的方法。既可以使用Firestore本身,也可以使用angularfire。
我发现很多github问题与解决方案有关,这是行不通的。我猜那是因为版本不同吗?
"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",
Run Code Online (Sandbox Code Playgroud)
我尝试过的代码替代方法:
import * as firebase from 'firebase';
firebase.firestore.FieldValue.serverTimestamp();
Run Code Online (Sandbox Code Playgroud)
错误TypeError:无法读取未定义的属性'FieldValue'
import * as firebase from 'firebase';
firebase.database.ServerValue.TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
错误TypeError:无法读取未定义的属性'ServerValue'
constructor( private afs: AngularFirestore ) { }
this.afs.firestore.FieldValue.serverTimestamp();
Run Code Online (Sandbox Code Playgroud)
类型“ FirebaseFirestore”上不存在属性“ FieldValue”。
自 firebase 8.0.0 起,如何导入 firebase发行说明发生了重大变化
在您导入之前
import * as firebase from 'firebase/app'
Run Code Online (Sandbox Code Playgroud)
但现在,你应该导入
import firebase from 'firebase/app'
Run Code Online (Sandbox Code Playgroud)
然后,您仍然应该仅导入 firestore 来访问服务器时间戳
import firebase from 'firebase/app'
import 'firebase/firestore'
Run Code Online (Sandbox Code Playgroud)
并在您的应用程序中使用
firebase.firestore.FieldValue.serverTimestamp()
Run Code Online (Sandbox Code Playgroud)
小智 5
我在我的项目中有这个工作:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
在我的包裹中:
"firebase": "^4.12.1",
"angularfire2": "^5.0.0-rc.5-next"
Run Code Online (Sandbox Code Playgroud)
我在packages.json文件中没有这个:
“@firebase/应用程序”
最后有帮助的是卸载与 firebase 相关的所有内容,所以正如我在我的问题中提到的:
"@firebase/app": "^0.1.10",
"angularfire2": "^5.0.0-rc.6.0",
"firebase": "^4.13.1",
Run Code Online (Sandbox Code Playgroud)
并npm install firebase angularfire2 --save再次运行。
这给了我:
"angularfire2": "^5.0.0-rc.7",
"firebase": "^5.0.1",
Run Code Online (Sandbox Code Playgroud)
这解决了我所有的问题。
将 firebase 导入为:
import * as firebase from 'firebase';
Run Code Online (Sandbox Code Playgroud)
时间戳代码本身:
get timestamp() {
return firebase.firestore.FieldValue.serverTimestamp();
}
Run Code Online (Sandbox Code Playgroud)
11 月 17 日编辑:如果您使用前面提到的 import import * as firebase from 'firebase';,您将在开发人员控制台中收到此警告:
看起来您正在使用 Firebase JS SDK 的开发版本。将 Firebase 应用部署到生产环境时,建议仅导入您打算使用的各个 SDK 组件。
对于模块构建,这些可以通过以下方式使用(替换为组件的名称 - 即身份验证、数据库等):
CommonJS 模块:const firebase = require('firebase/app'); require('firebase/');
ES 模块:从“firebase/app”导入 firebase;导入'firebase/';
打字稿:从“firebase/app”导入 * 作为 firebase;导入'firebase/';
所以改成:
import * as firebase from 'firebase/app';
import 'firebase/firestore';
Run Code Online (Sandbox Code Playgroud)
只做:
import * as firebase from 'firebase';
Run Code Online (Sandbox Code Playgroud)
导入所有Firebase模块,这不是生产的好习惯。最佳做法是像这样使用裸导入:
import * as firebase from 'firebase/app';
import 'firebase/firestore';
Run Code Online (Sandbox Code Playgroud)
这只会将Firestore模块导入您的应用中。然后,您可以执行以下操作:
get timestamp() {
return firebase.firestore.FieldValue.serverTimestamp();
};
Run Code Online (Sandbox Code Playgroud)
小智 5
进口
import firebase from 'firebase/app';
Run Code Online (Sandbox Code Playgroud)
用
firebase.firestore.FieldValue.serverTimestamp();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |