Обновите объект базы данных Firebase с несколькими загрузками

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

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

Обновите объект базы данных Firebase с несколькими загрузками

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

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

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

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

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

Обновите объект базы данных Firebase с несколькими загрузками

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

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

Почему вы не можете просто создать ссылку на новый узел Firebase, заполнить его нужными данными и записать? myNewNode = myFirebase.childByAutoId () затем установите дочерние элементы photoUrl и photoUrl со значениями и запишите узел в Firebase?

Jay 06.09.2018 19:29

@Jay, чтобы вы передавали данные от одного контроллера просмотра к другому, а затем загружали изображение / видео одновременно с одним storageRef для фото, другим для видео; захватить оба URL-адреса, а затем записать в базу данных? Или вам нужно будет просматривать загрузки по одной. У них разные места хранения, поэтому я думаю, что могу делать и то, и другое одновременно.

TJMac 07.09.2018 21:05

Зависит от варианта использования; есть несколько способов сделать это. В соответствии с приведенным выше комментарием получите ссылку на местоположение, запишите фотографию, получите ее URL-адрес и заполните объект, затем запишите видео и заполните объект, затем скажите объекту записать свои данные в firebase. Этот объект может быть структурой, содержащей, например, uid, photoURL и videoURL. Вы также можете создать узел в Firebase с исходными данными, передать ссылку другим представлениям и обновить узлы в этой ссылке по мере получения photoURL, а затем - videoURL. Это также зависит от того, как связаны ваши взгляды.

Jay 08.09.2018 00:02

О, в структуре, опубликованной в вашем вопросе, дочерние узлы под узлом пользователей (с ключом uid) имеют повторяющийся дочерний элемент userId: uid. На самом деле нет причин для этого, поскольку вы знаете, что uid является родительским ключом для узла. Ничего не повредит, но в этом нет необходимости. Если вам нужны дальнейшие рекомендации, я могу опубликовать ответ на высоком концептуальном уровне, чтобы вы могли следить за процессом. Дай мне знать.

Jay 08.09.2018 01:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
63
1

Ответы 1

С помощью Интернета или 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
    }
  }
}

Другие вопросы по теме