无法 return firebase 云存储上的快照值
Can't return the value on snapshot on firebase cloud storage
我想 return 使用 return 快照检索的值。但是,如果我在这里return它,它是未定义的。
如何获取 downloadURL?
const downloadURL = await storage
.ref()
.child(`${directory}/` + id)
.put(file, metadata)
.then((snapshot) => {
snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL)
// successfully file info
return downloadURL
})
})
console.log('download', downloadURL)
// get undefined
在您的代码中,您遗漏了 return
语句:
const downloadURL = await storage
.ref()
.child(`${directory}/` + id)
.put(file, metadata)
.then((snapshot) => {
// ⬇⬇ return was missing here
return snapshot.ref.getDownloadURL()
.then((downloadURL) => {
console.log('File available at', downloadURL)
// successfully file info
return downloadURL
})
})
console.log('download', downloadURL)
但是,请避免同时使用两者 async-await
and promise chaining。
如果你的函数async
,你可以重写为:
const snapshot = await storage.ref()
.child(`${directory}/` + id)
.put(file, metadata)
const downloadURL = await snapshot.ref.getDownloadURL()
console.log('download', downloadURL)
我想 return 使用 return 快照检索的值。但是,如果我在这里return它,它是未定义的。
如何获取 downloadURL?
const downloadURL = await storage
.ref()
.child(`${directory}/` + id)
.put(file, metadata)
.then((snapshot) => {
snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log('File available at', downloadURL)
// successfully file info
return downloadURL
})
})
console.log('download', downloadURL)
// get undefined
在您的代码中,您遗漏了 return
语句:
const downloadURL = await storage
.ref()
.child(`${directory}/` + id)
.put(file, metadata)
.then((snapshot) => {
// ⬇⬇ return was missing here
return snapshot.ref.getDownloadURL()
.then((downloadURL) => {
console.log('File available at', downloadURL)
// successfully file info
return downloadURL
})
})
console.log('download', downloadURL)
但是,请避免同时使用两者 async-await
and promise chaining。
如果你的函数async
,你可以重写为:
const snapshot = await storage.ref()
.child(`${directory}/` + id)
.put(file, metadata)
const downloadURL = await snapshot.ref.getDownloadURL()
console.log('download', downloadURL)