Обновить объект базы данных Firebase несколькими загрузками - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть пост-объект, состоящий из двух частей (1) фото и (2) видео. В потоке публикации пользователь выбирает и изображение, а затем нажимает рядом со следующим экраном, где они выбирают видео. И фото, и видео загружаются в Firebase как часть пост-объекта. Смотрите простой дизайн.

каркасный дизайн

enter image description here

Я застреваю при создании объекта post с URL-адресом фотографии и URL-адресом видео. Я пробовал:

1- После выбора фотографии и перехода к следующему шагу я загружаю фотографию в хранилище Firebase и создаю объект записи в базе данных с URL-адресом фотографии и пустой строкой для URL-адреса видео.

2 - Затем, выбрав видео, я загружаю его в хранилище Firebase и пытаюсь обновить существующий объект записи с помощью URL-адреса видео ...

Однако мне не удалось обновить правильный объект записи, и я не знаю, как мне получить postByAutoID для обновления правильного сообщения.

Вот как выглядит объект базы данных:

enter image description here

Я пытался передать photoURL во вторую часть поста, но загрузка и генерация URL-адреса не завершаются к моменту передачи переменной.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 05 сентября 2018

При загрузке через веб-интерфейс или JavaScript загрузка в облачное хранилище Firebase обещает возврат, поэтому Promise.all массив отдельных загрузок.

Что касается swift или IOS, вам придется загружать каждую загрузку (.putData) в память, а затем повторять / циклически повторять их.

См. Загрузка файлов на iOS , которая обеспечивает отправную точку и добавляет ваш цикл / итерацию.

// Data in memory
let data = Data()

// Create a reference to the file you want to upload
let riversRef = storageRef.child("images/rivers.jpg")

// Upload the file to the path "images/rivers.jpg"
let uploadTask = riversRef.putData(data, metadata: nil) { (metadata, error) in
  guard let metadata = metadata else {
    // Uh-oh, an error occurred!
    return
  }
  // Metadata contains file metadata such as size, content-type.
  let size = metadata.size
  // You can also access to download URL after upload.
  riversRef.downloadURL { (url, error) in
    guard let downloadURL = url else {
      // Uh-oh, an error occurred!
      return
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...