Javascript firebase存储,将图像检索到vue应用程序

Javascript firebase存储,将图像检索到vue应用程序,javascript,firebase,vue.js,firebase-storage,vuex,Javascript,Firebase,Vue.js,Firebase Storage,Vuex,我正在尝试从firebase存储下载图像以在我的Vue应用程序中呈现它,从应用程序到firebase存储的上载已成功,但检索时出现错误,我正在使用Vue CLI 3设置中的firebase SDK和vuex来管理我的状态。下面是main store.js文件中我的操作中的函数设置 createMeetUp{commit,getters},有效负载{ //这里我的有效载荷是一个包含以下道具的对象 常量集合={ 标题:payload.title, 位置:有效载荷。位置, 日期:payload.da

我正在尝试从firebase存储下载图像以在我的Vue应用程序中呈现它,从应用程序到firebase存储的上载已成功,但检索时出现错误,我正在使用Vue CLI 3设置中的firebase SDK和vuex来管理我的状态。下面是main store.js文件中我的操作中的函数设置

createMeetUp{commit,getters},有效负载{ //这里我的有效载荷是一个包含以下道具的对象 常量集合={ 标题:payload.title, 位置:有效载荷。位置, 日期:payload.date.toISOString, description:payload.description, 创建者id:getters.user.id } 让imageUrl 让钥匙 //现在我正在访问firebase数据库来存储上述对象 firebase.database.ref'meetup'.pushmeetup .thendata=>{ key=data.key 返回键 } .thenkey=>{ //在我的有效载荷对象中,我还存储了一个图像文件 //因此,我在这里上传图像到firebase存储 const fileName=payload.image.name const extension=fileName.slicefileName.lastIndexOf'.' 返回firebase.storage.ref'meetup/'+key+'.+extension.putpayload.image } .thenimageInfo=>{ //问题就在这个then块中,因为我一直在研究如何从存储器中检索图像,以便在应用程序中渲染它 imageUrl=imageInfo.getDownloadURL 返回firebase.database.ref'meetups.childkey.update{ imageUrl:imageUrl } } .然后=>{ //在这里,我只是在做我的突变。。 提交“createMeetUp”{ …聚会, imageUrl:imageUrl, id:钥匙 } } .catcherr=>console.logerr
} 根据上面的评论,如果我没有误认为未测试,那么下面的内容应该有效

请注意,getDownloadURL返回一个承诺,请参见,因此您必须链接承诺

  ....
  .then(key => {
     //also in my payload object i stored an image file
     //so here i am uploading the image to the firebase storage
     const fileName = payload.image.name
     const extension = fileName.slice(fileName.lastIndexOf('.'))
     return firebase.storage().ref('meetup/' + key + '.' + extension).put(payload.image)
  })
  .then(uploadTaskSnapshot => {
     return uploadTaskSnapshot.ref.getDownloadURL()
  })
  .then(imageUrl => {
    return firebase.database().ref('meetups').child(key).update({
          imageUrl: imageUrl
      })
  })
  ....

您的错误消息与您的代码不匹配。fileData不会出现在您的问题中的任何地方,但imageInfo会出现您正在用.put的结果来解决承诺,这是一个。这没有getDownloadURL方法。关于错误消息与promise返回的数据不匹配,我只是在看到错误后将值的名称从fileData更改为imageInfo,问题在于逻辑本身,现在,我理解你的观点,我正试图用.put的结果来解决这个承诺,但它没有getDownloadURL方法,我相信这很有意义,但是你的建议是什么,非常感谢你的快速响应UploadTask的then方法将返回UploadTaskSnapshot,它具有ref属性,反过来,有一个getDownloadURL方法。看到@RenaudTarnec谢谢你的回复,但我还是有点困惑,所以你说作为我的uploadTask的put将返回一个UploadTaskSnapshot,其中有一个ref,将有一个getDownloadURL方法,据我理解,这与@phil声称uploadTask没有getDownloadURL方法相矛盾,我检查了您附加的链接,但仍然无法确定应该更改哪个部分以使其正常工作:我简直说不出话来,这个小问题真的把我扯到了核心,我从昨天起就一直在处理这个问题,我真的非常感谢你:干杯:除了菲尔的评论,我很高兴能帮上忙。如果您认为这个答案解决了您的问题,您也可以接受它,请参阅。谢谢