【问题标题】:Change storageBucket ref after initialization初始化后更改 storageBucket ref
【发布时间】:2021-03-24 13:34:17
【问题描述】:

我正在尝试为 React 中的 Firebase 存储构建存储管理器应用程序。

应用应该能够列出/添加/删除其中的存储桶和文件。

我的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

如何更改存储桶以便我也可以上传到其他存储桶?

假设我有以下存储桶列表:

  • buckettest-xxxxx.appspot.com
  • buckettest-yyyyy.appspot.com
  • buckettest-zzzzz.appspot.com

如何在初始化后切换storage 对象以使用buckettest-zzzzz.appspot.com

谢谢

【问题讨论】:

    标签: javascript reactjs firebase firebase-storage


    【解决方案1】:

    最简单的方法可能是创建一个新的FirebaseApp对象初始化到新的bucket,然后从中获取storage()服务。

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

    【讨论】:

    • 我想到了这一点,但考虑到我可以创建存储桶、删除它们等等......创建更多的 fireBaseApps 在某些时候会成为内存问题吗?有没有办法销毁这个实例?
    • "at some point" 这些对象非常轻量级。除非您创建数万个,否则我不会担心。
    • 感谢您的信息。我现在还有一个关于应用程序之间身份验证的后续问题......也许你可以看看这里stackoverflow.com/questions/65287720/…
    猜你喜欢
    • 2012-12-29
    • 2012-12-05
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2012-01-29
    相关资源
    最近更新 更多