使用(Javascript)动态切换到不同的Firebase项目应用

时间:2019-07-11 15:55:37

标签: javascript firebase

我正在使用javascript开发Firebase 如何切换到其他应用 我有一个二维数组,第一个数组具有Firebase应用程序信息,例如api_key应用程序ID存储路径等,而内部数组具有10个文件,我想在Firebase存储上上传,然后将该文件的下载URL存储在Firebase上的数据库中。 Firebase配置文件的第一次迭代和Firebase存储上的上传文件的内部迭代。但是在循环的第一次迭代之后,firebase给出了错误
“代码:“ app / duplicate-app”,消息:“ Firebase:名为'[DEFAULT]'的Firebase应用已存在(app / duplicate-app)” 我的问题是如何在Firebase中动态切换不同的应用程序

异步函数uploadFiles(app_data1){

$.each(app_data1,function(i,app){

    var api_key=app.fire_base_data.api_key;
    var database=app.fire_base_data.firebasePath;
    var storage=app.fire_base_data.firebaseStoragePath;
    var config = {
  apiKey: api_key,
  //  authDomain: "<your-project-id>.firebaseapp.com",  
  databaseURL: database,
  storageBucket: storage,
};
firebase.initializeApp(config);

    $.each(app.app_data,function(i,file){


    //console.log(app.app_name+","+"app file: "+app.backup_file_path);
    var d = new Date();
    const my_date=d.getDay()+"-"+d.getMonth()+"-"+d.getFullYear();
    var tabl_name =file.replace(".sql", "");
    const new_name=tabl_name+"_"+my_date+".sql";
    var backup_path="daily-backup/"+app.fire_base_data.app_name+"/"+file;
    console.log(backup_path);

    const ref = firebase.storage().ref('backup/'+my_date+"/"+new_name);
        //console.log(backup_path+":"+app_data.app_id);  
        toDataUrl(backup_path, function(myBase64) {
         var upload_task= ref.putString(myBase64, 'data_url').then(function(snapshot) {
        console.log( file+": "+snapshot.totalBytes);
        count++
        const  metadata = snapshot.metadata;
        const  Url=snapshot.downloadURL;
        const  percentage = snapshot.bytesTransferred / snapshot.totalBytes * 100;
        if (percentage==100) {
          //console.log(Url);
          const  rootRef = firebase.database().ref();
          const  storesRef = rootRef.child('backup/'+app.fire_base_data.app_name);
          const  table_ref=storesRef.child(tabl_name+"/");
          table_ref.child(my_date+"/").set({'file_name':new_name,'download url':Url});
          //deleteDirectory(backup_path)

        }

      });    
       });
      });

     });


}

代码:“ app / duplicate-app”,消息:“ Firebase:名为'[DEFAULT]'的Firebase应用已经存在(app / duplicate-app)。“,名称:” [DEFAULT]“,堆栈:” [ DEFAULT]:Firebase:名为'[[DEFAULT] ... com / ajax / libs / jquery / 3.4.1 / jquery.min.js:2:81117)的Firebase应用

1 个答案:

答案 0 :(得分:0)

一旦调用initializeApp,您将无法再次调用它(具有相同的应用程序名称),直到在已初始化的应用程序上调用delete为止。您现在要做的是用与先前初始化的应用程序相同的名称初始化一个应用程序,这是无效的。

如果您希望同时具有多个初始化的应用程序,则应使用initializeApp的第二个参数为它们指定唯一的名称。