求助:Ionic 3项目操作Firebase Firestore执行CRUD时触发警告
解决Ionic3项目中Firebase Firestore的Date对象存储警告问题
嘿,我之前帮不少开发者处理过这个Firestore的警告,刚好你的场景是Ionic3搭配Firebase Firestore,给你整理了一套实用的解决方案:
为啥会出现这个警告?
Firestore当时要更新Date对象的存储逻辑——旧版本里JavaScript Date对象会自动转成Firestore的Timestamp类型,但后续版本会严格区分这两者,如果不提前配置,你的CRUD操作可能会出问题,所以才弹出这个提示。
具体怎么解决?
核心就是在调用任何Firestore方法之前,添加一段配置代码,告诉Firestore保持兼容的处理逻辑。
情况1:直接用Firebase SDK初始化
找到你项目里初始化Firebase的文件(一般是app.component.ts或者单独的firebase.config.ts),按照下面的方式修改:
import * as firebase from 'firebase'; // 先写你的Firebase配置信息 const firebaseConfig = { // 你的apiKey、authDomain等配置 }; // 初始化Firebase firebase.initializeApp(firebaseConfig); // 关键:添加这行配置,放在初始化之后、任何Firestore操作之前 firebase.firestore().settings({ timestampsInSnapshots: true });
情况2:用AngularFire2操作Firestore
如果你的项目是用AngularFire2来封装Firestore操作,那就在app.module.ts里添加配置:
import { AngularFireModule } from 'angularfire2'; import { AngularFirestoreModule } from 'angularfire2/firestore'; @NgModule({ imports: [ AngularFireModule.initializeApp(yourFirebaseConfig), // 启用持久化(可选) AngularFirestoreModule.enablePersistence(), // 添加这行配置解决警告 AngularFirestoreModule.settings({ timestampsInSnapshots: true }) ] }) export class AppModule { }
验证效果
改完之后重启你的Ionic3项目,再执行CRUD操作,那个烦人的警告就会消失啦。而且这个配置会让Firestore把查询返回的Timestamp自动转成JavaScript Date对象,你的现有代码逻辑完全不用改,也不用担心后续Firestore更新导致应用崩溃。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

