Firebase занимает много времени, чтобы написать документ и заморозить приложение - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь записать массив в документ на Firebase, как описано в приведенном ниже коде. Однако, когда этот массив содержит 100 элементов (только имена в виде строк, поэтому нет проблем с количеством данных), приложение останавливается на минуту и ​​в консоли появляется сообщение

Не удалось добраться до хранилища облачных файлов бэкенд. Сервер не ответил в течение 10 секунд. Обычно это указывает на то, что ваше устройство в настоящее время не имеет исправного соединения Inte rnet. Клиент будет работать в автономном режиме до тех пор, пока не сможет успешно подключиться к бэкэнду.

Хотя с inte rnet соединение в порядке. Эта проблема также возникает в меньшем массиве, состоящем всего из 20 элементов, но она не так ярко выражена.

Что я делаю неправильно, из-за чего приложению требуется слишком много времени для записи в Firebase?

func saveDocOnline() {

    let db = Firestore.firestore()

    db.collection("Collection 1").document("Document 1").setData([
        "Array" : loadItems()
    ]) { (error) in
        if let e = error {
            print("Error saving: \(e)")
        } else {
            print("Successfully Saved Online")
        }
    }
}

func loadItems() -> [String] {
    var itemTitle: [String] = []

    itemTitle = ["Generic", "Generic Bars", "Generic Restaurants" ... "Halloween", "Jazz", "Xmas", "Acid Jazz"]

    return itemTitle

}

1 Ответ

0 голосов
/ 19 февраля 2020

Очень странно. Не уверен на 100%, что может быть причиной этого. Я попытался загрузить данные аналогичного размера без проблем, но я бы попробовал несколько вещей.

  1. Возможно, возникла проблема, вызвав функцию внутри в качестве аргумента для setData(). Попробуйте инициализировать содержимое loadData с let data:[String:[String]] = loadData() перед setData line. Затем используйте data в качестве аргумента вместо loadData(). Это будет делать две вещи, это поможет с выводом типа, если у Firebase возникнут проблемы по какой-то причине, и ограничит область действия функции, если firebase не понравится.

  2. (Изменить: проигнорируйте это предложение, просто перечитайте ваш пост, и я вижу, что вы пробовали это) Также поэкспериментируйте с массивами меньшего размера и посмотрите, сможете ли вы успешно написать 50 элементов. Если это работает, go для 75, или если это не пытается 25. Et c. Может быть ограничение на количество элементов в массиве, которое вы можете разместить в этом сценарии, но это было бы довольно странным ограничением firebase.

  3. попробуйте не использовать массив ключевых слов Я не думаю, что это повлияет на это, но только для того, чтобы быть в безопасности.

Все эти решения, если они будут работать, будут наводить на мысль о странности внутри структуры Firebase, но по крайней мере вы может устранить возможности.

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