Как предотвратить ошибку значения, которая появляется при получении данных из базы данных firestore в Python

# #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):