gbo*_*ine 6 python firebase firebase-realtime-database google-cloud-functions
我正在编写一个简单的谷歌云函数来学习,使用新的 Python3.7 选项,我想读/写一些数据到 Firebase 实时数据库。
我找到了一些可以使用 Firestore 的信息,但现在我需要使用实时数据库。
# global
import firebase_admin
from firebase_admin import db
# from firebase_admin import firestore
default_app = firebase_admin.initialize_app()
def check_prices_updates(request):
"""Responds to any HTTP request.
Args:
request (flask.Request): HTTP request object.
Returns:
The response text or any set of values that can be turned into a
Response object using
make_response
"""
collection = 'pricelist'
mybase = db.reference(collection)
....[other code]
return "OK"
Run Code Online (Sandbox Code Playgroud)
这是我的代码的摘录,文档说initialize_app()
必须将其留空以收集项目默认凭据。
我调用 db.reference(collection) 的行给了我一个例外:
ValueError:无效的 databaseURL 选项:“无”。databaseURL 必须是非空 URL 字符串。
好像配置参数没有显示请求的键“databaseURL”。以 Firestore 为例,我可以firestore.client()
在从 firebase_admin 导入后调用,在 requirements.txt 中添加“google-cloud-firestore”。
现在,对于 firebase,我应该修复什么才能在 db 上读写?
附注。在我的数据库上,“.read”规则对所有人都是正确的,所以我在身份验证方面没有问题!
更新: 睡个好觉后,我意识到要访问实时数据库,我需要将一些选项传递给 initialize_app,如下所示:
firebase_admin.initialize_app(options={'databaseURL': 'https://[PROJECT-NAME].firebaseio.com'})
Run Code Online (Sandbox Code Playgroud)
干杯
小智 0
#Firebase Admin Imports
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
#Firebase admin sdk Key - Save it as secret
firebaseval={
"type": "service_account",
"project_id": "<project_id>",
"private_key_id": "<private_key>",
"private_key": "-----BEGIN PRIVATE KEY--xxxxxxxxxxxxxxxxxxxxxxxxxx\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-ipcf5@<project_id>.iam.gserviceaccount.com",
"client_id": "<clinet_id>",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ipcf5%40<project_id>.iam.gserviceaccount.com"
}
cred = credentials.Certificate(firebaseval)
print("\n---------------------------")
print("Initialising Firebase...")
#Initilising Database 1- fetching stock and option details
firebase_admin.initialize_app(cred, {
'databaseURL' : 'https://<project_id>-<instance_id1>.firebaseio.com/'
})
# Initilising Database 2- Different instance ID
app2 = firebase_admin.initialize_app(cred, {
'databaseURL': 'https://<project_id>-<instance_id2>..firebaseio.com/'
}, name='app2')
# Initilising Database 3- Different instance ID
app3 = firebase_admin.initialize_app(cred, {
'databaseURL': 'https://<project_id>-<instance_id3>..firebaseio.com/'
}, name='app3')
print("Initialised Firebase")
print("---------------------------\n")
Run Code Online (Sandbox Code Playgroud)
# database instance_id2
mainref2=db.reference("PATH",app2)
# database instance_id3
mainref3==db.reference("PATH",app3)
# Reading whole data from
mainref2.get()
# Reading inside child node from db instance_id2
mainref2.child("child_name").get()
# Setting json data to db instance_id3
mainref3.set({"data":"something"})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1019 次 |
最近记录: |