Изменить storageBucket ref после инициализации

Я пытаюсь создать приложение диспетчера хранилища для Firebase Storage в React.

Приложение должно иметь возможность перечислять/добавлять/удалять сегменты и файлы внутри них.

Я настроил initializeApp следующим образом

import firebase from 'firebase';
import 'firebase/auth';
import 'firebase/storage';

firebase.initializeApp({
  apiKey: 'xxxxxxxxxxxxxxxxxxxx',
  authDomain: 'buckettest-xxxxx.firebaseapp.com',
  projectId: 'buckettest-xxxxx',
  storageBucket: 'buckettest-xxxxx.appspot.com',
  messagingSenderId: 'xxxxxxxxxxxxxxxxxxxx',
  appId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  measurementId: 'G-QZDBHEWHJ5',
});

const auth = firebase.auth();
const storage = firebase.storage();

Все идет нормально. Конфиг работает, storage подключен к хранилищу из конфига storageBucket: 'buckettest-xxxxx.appspot.com',

Функции загрузки, скачивания, просмотра, удаления работают идеально.

Проблема в том, что если я переключаюсь на другое ведро из своего приложения, объект storage все еще привязан к buckettest-xxxxx.appspot.com из конфигурации.

Как я могу изменить сегмент, чтобы я мог загружать данные и в другие сегменты?

Предположим, у меня есть следующий список сегментов:

  • ведротест-ххххх.appspot.com
  • ведротест-гггг.appspot.com
  • ведротест-zzzzz.appspot.com

Как я могу переключить объект storage, чтобы использовать buckettest-zzzzz.appspot.com после инициализации?

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
126
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вероятно, самый простой способ — создать новый объект FirebaseApp, инициализированный новым сегментом, а затем получить от него сервис storage().

var otherApp = firebase.initializeApp({
  storageBucket: 'otherbucket.appspot.com',
}, second);
var otherStorage = otherApp.storage();

Я думал об этом, но, учитывая тот факт, что я могу создавать сегменты, удалять их и т. д., создание большего количества приложений fireBaseApp в какой-то момент может стать проблемой с памятью? Может быть, есть способ уничтожить эти экземпляры?

Sabbin 13.12.2020 21:17

«в какой-то момент» Эти объекты довольно легкие. Если бы вы не создали десятки тысяч из них, я бы не беспокоился об этом.

Frank van Puffelen 13.12.2020 21:43

Спасибо за информацию. У меня также есть дополнительный вопрос относительно аутентификации между приложениями... может быть, вы можете посмотреть здесь stackoverflow.com/questions/65287720/…

Sabbin 14.12.2020 11:57

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