Python写入Firebase实时数据库,Angular读取Cloud Firestore数据不同步问题
哇,这种数据存读不在同一个数据库的问题确实磨人,折腾一天肯定够闹心的!别慌,咱们有两个清晰的解决路径,选一个适合你的场景就行:
方案一:修改Python程序,让它写入Cloud Firestore
既然你的Angular应用已经在从Firestore读数据了,那直接让Python把数据写到Firestore里是最直接的办法:
- 确保你的Python环境里已经安装了
firebase-admin(如果没装的话,先跑pip install firebase-admin) - 替换原来的实时数据库写入代码,改成Firestore的操作逻辑:
from firebase_admin import firestore import firebase_admin from firebase_admin import credentials # 初始化firebase-admin(如果还没初始化的话) cred = credentials.Certificate('path/to/your/serviceAccountKey.json') firebase_admin.initialize_app(cred) # 获取Firestore客户端 db = firestore.client() # 写入数据到items集合 doc_ref = db.collection('items').document() # 如果需要自定义文档ID,把括号里换成你的ID doc_ref.set({ # 这里放你的myobject数据,比如'name': 'test', 'value': 123 }) # 如果是批量写入多个文档,也可以用循环: # items_data = [{'name': 'item1'}, {'name': 'item2'}] # for item in items_data: # db.collection('items').add(item)
这样Python写的数据就会出现在Cloud Firestore的items集合里,和Angular的读取逻辑完美匹配。
方案二:修改Angular应用,让它读取Firebase实时数据库
如果不想动Python的代码,那调整Angular的读取逻辑来对接实时数据库也可以:
- 先安装实时数据库相关的依赖包:
npm install @angular/fire/firebase-database firebase
- 在你的Angular模块(比如
app.module.ts)里导入实时数据库的模块:
import { AngularFireDatabaseModule } from '@angular/fire/firebase-database'; @NgModule({ imports: [ // 其他已有的导入,比如AngularFireModule.initializeApp(environment.firebase) AngularFireDatabaseModule // 加上这个 ] }) export class AppModule { }
- 修改你的服务代码,把
AngularFirestore换成AngularFireDatabase,用实时数据库的API读取数据:
import { AngularFireDatabase } from '@angular/fire/firebase-database'; constructor(private db: AngularFireDatabase) {} getData() { // 读取实时数据库里的items节点数据,返回Observable this.items = this.db.list('items').valueChanges(); }
这样Angular就能读取到Python写入实时数据库的items数据了。
选哪个方案看你自己的需求:如果后续主要用Firestore,优先选方案一;如果Python的逻辑不想改,就选方案二。
内容的提问来源于stack exchange,提问作者Mark B
相关产品推荐
相关产品推荐

