Firebase存储getDownloadUrl不起作用

时间:2019-12-09 09:28:04

标签: javascript firebase vuejs2 firebase-storage

我正在使用Firebase开发vue应用,并且我已经提到了similar个问题,但没有找到解决我问题的方法。 我要做的是将下载URL存储到我的事件数据库中。 我的代码:

var stRef = st.ref(`event-photos/${eventId}`) // st is firebase.storage()
var upTask = stRef.put(this.fileBlob)
upTask.on('state_changed', snapshot => {
  this.uploadValue = (snapshot.bytesTransferred/snapshot.totalBytes)*100
  }, error => {
  console.log(error.message)
  }, () => {
    upTask.snapshot.ref.getDownloadUrl().then(url => {
      db.collection('events').doc(eventId).set({
        image_url: url
      }).then(() => {
        alert('Event creation successful')
      }).catch(error => {
        alert(error.message)
      })
   })
})

我已从this页面上获取了代码(请参阅注册事件处理程序的示例)。 我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

我建议您使用on()方法来返回一个Promise,而不是使用then()侦听器,以便将异步任务返回的不同Promises(例如{{1 }}和getDownloadUrl()

因此,以下应该可以解决问题:

set()

答案 1 :(得分:0)

我改变了

var stRef = st.ref(`event-photos/${eventId}`)
var upTask = stRef.put(this.fileBlob)

var upTask = st.ref().child(`event-photos/${eventId}`).put(this.fileBlob)

,我正在使用带有功能的downloadUrl。因此,我想我们不能将路径放在ref中,而必须使用child。