Я не могу получить, обновить или создать документы в базе данных Google Firebase (Cloud Firestore) с помощью Python.
Что у меня есть:
A) База данных с коллекцией идокументы (вставленные вручную в Интернете):
B) Файл учетных данных JSON сохранен как test.json
(в документации его часто называют path/to/serviceKey.json
), который выглядит следующим образомthis (отредактировано):
{
"type": "service_account",
"project_id": "test-6f02d",
"private_key_id": "fffca ... 5b7",
"private_key": "-----BEGIN PRIVATE KEY-----\n ... 1IHE=\n-----END PRIVATE KEY-----\n",
"client_email": "test-admin@test-6f02d.iam.gserviceaccount.com",
"client_id": "112 ... 060",
"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/ ... .gserviceaccount.com"
}
У этого пользователя есть роль Владелец .
C) Установлен firebase_admin (с помощью virtualenv, pip), я могу сделать:
import firebase_admin
from firebase_admin import credentials, firestore
databaseURL = {'databaseURL': "https://test-6f02d.firebaseio.com"}
cred = credentials.Certificate("test.json")
firebase_admin.initialize_app(cred, databaseURL)
<firebase_admin.App object at 0x7f20056534e0>
Работает следующее:
db = firestore.client()
for k in db.collection('items').get():
print(k)
Я получаю 3 документа, я могу получить доступ к идентификатору документов
<google.cloud.firestore_v1beta1.document.DocumentSnapshot object at 0x7f2003bebc18>
<google.cloud.firestore_v1beta1.document.DocumentSnapshot object at 0x7f2003bebdd8>
<google.cloud.firestore_v1beta1.document.DocumentSnapshot object at 0x7f2003bebcf8>
print(k.id)
a3BxcpWpavHmuz6DpZH3
Однако, этоМакс я могу получить.
1) Я не знаю, как получить доступ к значениям документа.Примерно так:
from firebase_admin import db
ref = db.reference('items')
print(ref)
<firebase_admin.db.Reference object at 0x7f20013b2828>
# GET?
ref.get()
# empty
2) Я не знаю, как получить прямой доступ к значениям (например, с помощью браузера или requests
), что-то вроде:
https://test-6f02d.firebaseio.com/items.json
возвращает
{
"error" : "Permission denied"
}
3) Я не знаю, как обновить существующий документ или создать новый в коллекции items
.
# UPDATE?
# PUSH?
Я пытался подписаться на этот блог и документация (но у нее нет примеров) и несколько ответов здесь на SO, но безуспешно.
Заранее спасибо.