# #python #firebase #google-cloud-firestore #valueerror #kivymd
Вопрос:
Я использую firebase firestore
базу данных для своего KivyMD
проекта. В программе при нажатии кнопки данные должны быть сохранены в базе данных, если они не существуют. Это работает успешно. Но проблема ValueError
в том, что появляется, когда пользователь вводит существующий адрес электронной почты и вводит другой адрес электронной почты во второй раз, поскольку он недействителен. Что я могу сделать, чтобы предотвратить это?
Ошибка
ValueError: The default Firebase app already exists. This means you called initialize_app() more than once without providing an app name as the second argument. In most cases you only need to call initialize_app() once. But if you do want to initialize multiple apps, pass a second argument to initialize_app() to give each app a unique name.
Код
def send_data(self, email, password):
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("firestore.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
data = {
"Email": email,
"Password": password
}
query_email = db.collection(u'Users').where(u"Email", u"==", data["Email"]).get()
if query_email:
print('exist')
else:
print('does not exist')
db.collection(u'Users').add(data)
Ответ №1:
Основываясь на сообщении об ошибке, проблема заключается в следующих строках:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("firestore.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
Если возможно, переместите эти строки за пределы своей функции. Вы должны инициализировать db
функцию в другом месте и передать ее своей функции.
def send_data(self, email, password, db):