我正在使用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页面上获取了代码(请参阅注册事件处理程序的示例)。 我可能做错了什么?
答案 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。