Kivy Python - Firebase DB Connection (получение данных из базы данных) - PullRequest
0 голосов
/ 07 марта 2020

Я запутался.

Описание проблемы:

Я хочу подключиться к базе данных Firebase Realtime, используя URL-адрес. Я создаю класс FirebaseConnection, в котором я определил несколько методов:

(1) get_all_data - чтобы получить данные из базы данных Firebase и сохранить UrlRequest в self.req

(2) success_confirm - вызывается при успешном вызове UrlRequest () и данные помещаются в self.all_data

(3) search_customer - it должен вызываться, когда я хочу проверить, зарегистрирован ли указанный c пользователь в БД, проверяющий список self.all_data

Я использую класс FirebaseConnection в main.py, когда я запускаю MyMainApp и метод on_start, но данные не помещаются в self.all_data.

main.py

from firebase_api import FirebaseConnection

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager
from kivy.lang import Builder


class WindowManager(ScreenManager):
    pass


kv = Builder.load_file("windowmanager.kv")
data_from_firebase = []


class MyMainApp(App):
    def build(self):
        return kv

    def on_start(self):
        # Check connection with Firebase DB
        self.firebase_conn = FirebaseConnection('your-url-to-firebase-db')
        self.firebase_conn.get_all_data()


if __name__ == "__main__":
    MyMainApp().run()

firebase_api.py

from kivy.network.urlrequest import UrlRequest

class FirebaseConnection:
    def __init__(self, url):
        self.url = url
        self.req = None
        self.all_data = []

    def success_confirm(self, *args):
        for i in self.req.result:
            self.all_data.append(i)
        print(self.all_data)
        print('Success!')

    def get_all_data(self):
        # Check connection with Firebase DB
        json_url = self.url+'.json'
        self.req = UrlRequest(json_url, on_success=self.success_confirm)
        print(self.req)

    def search_customer(self, email_or_login):
        print('Search Customer method...')
        print(self.all_data)

Вопросы:

Кто-нибудь знает, как это изменить?

...