1

私はEmberとEmberFireに比較的慣れていません。クライアント/ロゴ管理アプリケーションに取り組んでいます。現在、Firebase Authentication と Firebase データが期待どおりに機能しています。ロゴを Firebase ストレージにアップロードしようとすると、次のエラーが表示されます。

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

呼び出されているアクションは次のとおりです。

コントローラ

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' );
    }
}

テンプレート

<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 リファレンスにアクセスして、クイックスタートに示されている「storage()」メソッドを呼び出すにはどうすればよいでしょうか。その参照へのアクセスが不可能な場合、ストレージを使用するために Firebase への別の「非 EmberFire」参照を作成する必要がありますか? 私は単に.jpgをアップロードしようとしています。

4

1 に答える 1

8

EmberFire 2.0を使用していることを確認してください。firebaseAppサービスを介して Firebase Storage API にアクセスできます。

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

サービスは既に初期化されたアプリです。firebaseAppサービスと混同しないでください。firebaseサービスはデータベース参照のみです (下位互換性のために保持されています)。

于 2016-06-15T21:09:47.173 に答える