Медленная загрузка данных при загрузке с firebase + iOS - PullRequest
0 голосов
/ 12 декабря 2018

Я готовлю собственное приложение для iOS с использованием реальной базы данных Firebase.

У меня около 100 тыс. Данных .. Мне нужно показать последние 50 постов, а после загрузки еще 50 постов, поэтому я внедрил пейджинг из 50 записей, однако это заняло много времени (около 20-30 секунд).

ТАКЖЕ я пытался с индексировать с правилами в базе данных.

К вашему сведению: с 1000 записями все работает нормально.

Как улучшить производительность?

  let post_messagesReference = self.databaseRef.child(FirebaseTablePostMessages)
        var query = post_messagesReference.queryOrdered(byChild: kCreated)
        var lastKey = String()
        var createdVal = Int()
        if let last = self.endKeyCommunity.first {
            lastKey = last.id
            createdVal = Int(last.created)
        }

        //get first 50 records
        if self.endKeyCommunity.count == 0{
            query = query.queryLimited(toLast:50)
            self.showLoaderView()
        } else { //get next 50 records
            query = query.queryEnding(atValue: createdVal).queryLimited(toLast: 50)
        }
        query.observeSingleEvent(of: .value, with: { (snapshot) in
            guard let children = snapshot.children.allObjects.first as? DataSnapshot else { return }
            if snapshot.childrenCount > 0 {
                for child in snapshot.children.allObjects as! [DataSnapshot]{
                    guard case let communityChatDictionary as NSDictionary = child.value else { return }
                    if lastKey != child.key{
                    }
                guard case let communityChatDictionary as NSDictionary = children.value else { return }

            }

        }) { (error) in
  } 

firebase rules index

1 Ответ

0 голосов
/ 12 декабря 2018

Попробуйте изменить правила Firebase, указав:

".read": "query.orderByKey &&
            query.limitToFirst <= 100"

Удалите этот код var query = post_messagesReference.queryOrdered(byChild: kCreated).Просто назовите ваши нумерованные запросы так:

post_messagesReference.limitToFirst(50)
                  .orderByKey(kCreated)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...