2016-06-15 7 views
1

EmberとEmberFireは比較的新しいです。私はクライアント/ロゴ管理アプリケーションに取り組んでいます。私は現在Firebase認証とFirebaseのデータを期待どおりに動作させています。私はFirebaseストレージにロゴをアップロードするために行くとき、私はこのエラーを提示しています:EmberFire&Firebase Storageリファレンス

コントローラ

firebase: Ember.inject.service('firebase'), 
actions: { 
    createClient(){ 
     let name = this.get('clientName'); 
     let image = document.getElementById('client-image'); 
     let storeName = name.replace(/ /g, ''); 

     let storageRef = firebase.storage().ref(); 

     let file = image.files[0]; 
     let metadata = { 
      'contentType' : file.type 
     }; 

     let uploadTask = storageRef.child(`uploads/${storeName}/${file.name}`).put(file, metadata); 

     uploadTask.on('state_changed', null, function(error){ 
      console.error('Upload Failed:', error); 
     }, function(){ 
      console.log('Uploaded', uploadTask.snapshot.totalBytes, 'bytes.'); 
      console.log(uploadTask.snapshot.metadata); 
      let uploadUrl = uploadTask.snapshot.metadata.downloadURLs[0]; 
      console.log('File available at ', url); 

      let client = this.store.createRecord('client', { 
       name: name, 
       image: uploadUrl, 
       isActive: false, 
       timestamp: new Date().getTime() 
      }); 
      client.save(); 

     }); 

     // Tell the route to hide the client form. 
     this.send('hideAddClientForm'); 
    } 
} 

テンプレート:ここ

Uncaught Error: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp(). firebase.js:30 

が呼び出されているアクションです

<div id="new-overlay" class="overlay" {{action "hideAddClientForm"}}></div> 
<div id="newClient"> 
    {{input type="text" id="client-name" placeholder="Client Name" value=clientName}}<br /> 
    {{input type="file" id="client-image" value=clientImage}} 
    <div class="submitBtn" {{action "createClient"}}>Add Client</div> 
</div> 

要するに、EmberFireが提供するFirebaseリファレンスにアクセスするには、here in the Quickstartと表示されている「storage()」メソッドを呼び出すことができます。その参照へのアクセスが不可能な場合は、Storageを使用するためにFirebaseの別の「EmberFire以外の」参照を作成する必要がありますか?私は単純に.jpgをアップロードしようとしています。

+0

私は 'firebase.initializeApp()'を試してみましたが、 'あなたのAPIキーは無効です。正しくコピーされているかどうか確認してください。'と言いました。認証とデータベースはうまくいけば、それは機能していないファイルストレージだけです。 –

答えて

8

EmberFire 2.0を使用していることを確認してください。あなたはfirebaseAppサービスを通じてFirebaseストレージAPIにアクセスすることができます。

firebaseApp: Ember.inject.service(), 
actions: { 
    doSomething() { 
    const storageRef = this.get('firebaseApp').storage(); 
    } 
} 

firebaseAppサービスだけではなく、(後方互換性のために維持)、データベースの参照ですfirebaseサービスと混同されるように初期化済みアプリです。

関連する問題