【问题标题】:EmberFire & Firebase Storage ReferenceEmberFire 和 Firebase 存储参考
【发布时间】:2016-10-17 02:13:45
【问题描述】:

我对 Ember 和 EmberFire 比较陌生。我正在开发一个客户端/徽标管理应用程序。我目前的 Firebase 身份验证和 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 引用,以便我可以调用显示为here in the Quickstart 的“storage()”方法。如果无法访问该引用,我是否必须创建另一个对 Firebase 的“非 EmberFire”引用才能使用存储?我只是想上传一个.jpg。

【问题讨论】:

  • 我要补充一点,我也尝试过firebase.initializeApp(),结果是Your API key is invalid, please check you have copied it correctly.正如我所说,身份验证和数据库工作正常,只是文件存储不工作。

标签: ember.js firebase emberfire firebase-storage


【解决方案1】:

确保您使用的是EmberFire 2.0。您可以通过firebaseApp 服务访问 Firebase Storage API:

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

firebaseApp 服务是一个已经初始化的应用程序,不要与 firebase 服务混淆,后者仅供数据库参考(为了向后兼容而保留)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2020-11-01
    • 2021-10-06
    • 2019-04-25
    相关资源
    最近更新 更多