Динамически переключаться на различные приложения проекта Firebase с помощью (Javascript) - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над FireBase с использованием JavaScript как переключаться на разные приложения У меня есть двумерный массив, в первом массиве есть информация о приложении firebase, например, путь хранения идентификатора приложения api_key и т. Д., А во внутреннем массиве есть 10 файлов, которые я хочу загрузить в хранилище firebase, а затем сохранить URL-адрес загрузки этих файлов в базе данных на базе firebase. первая итерация для файла конфигурации firebase и внутренняя итерация для загрузки файла в firebase storage.but после первой итерации цикла, когда firebase выдает ошибку
"code:" app / duplicate-app ", сообщение:" Firebase: приложение Firebase с именем [DEFAULT] 'уже существует (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: приложение Firebase с именем [DEFAULT] 'уже существует (app / duplicate-app).", Имя: "[DEFAULT]", стек: "[ DEFAULT]: Firebase: приложение Firebase с именем '[DEFAULT]… com / ajax / libs / jquery / 3.4.1 / jquery.min.js: 2: 81117)

1 Ответ

0 голосов
/ 11 июля 2019

После вызова initializeApp вы не сможете вызывать его снова (с тем же именем приложения), пока не наберете delete в приложении, которое было инициализировано.Теперь вы пытаетесь инициализировать приложение с тем же именем, что и у ранее инициализированного приложения, что недопустимо.

Если вы хотите, чтобы несколько инициализированных приложений были доступны одновременно, вы должны дать имуникальные имена, использующие второй аргумент для initializeApp .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...