无法 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)