更新 photoURL Firebase v9 web,反应 Javascript

Update photoURL Firebase v9 web, react Javascript

我正在按照 Udemy firebase Udemy 教程使用 javascript 创建 firebase 网络应用程序并做出反应。课程 material 有点过时了。我想知道如何更改用户的照片 URL - 他们使用电子邮件和密码注册,我有一个单独的挂钩来处理注册信息。

下面是 Udemy 课程提供的用于更新用户照片 URL 的代码 - 有谁知道我将如何在 Firebase v9 中编写此代码?谢谢!

// upload user thumbnail
      const uploadPath = `thumbnails/${res.user.uid}/${thumbnail.name}`
      const img = await projectStorage.ref(uploadPath).put(thumbnail)
      const imgUrl = await img.ref.getDownloadURL()

      // add display AND PHOTO_URL name to user
      await res.user.updateProfile({ displayName, photoURL: imgUrl })

从 v9 之前的版本重写到 v9 通常非常简单,特别是如果您遵循 upgrade guide or compare the v8 and v9 samples in the documentation on uploading files.

在您的代码中,此 v8 代码:

const uploadPath = `thumbnails/${res.user.uid}/${thumbnail.name}`
const img = await projectStorage.ref(uploadPath).put(thumbnail)
const imgUrl = await img.ref.getDownloadURL()

// add display AND PHOTO_URL name to user
await res.user.updateProfile({ displayName, photoURL: imgUrl })

在 v9 及更高版本中变成这样:

const uploadPath = `thumbnails/${res.user.uid}/${thumbnail.name}`
const img = await uploadBytes(ref(projectStorage, uploadPath, thumbnail))
const imgUrl = await getDownloadUrl(img.ref)

// add display AND PHOTO_URL name to user
await updateProfile(res.user, { displayName, photoURL: imgUrl })

如果仔细观察,您会发现大部分更改只是将命名空间 object.operation() 方法调用移动到 modular/functional operation(object) 形式。除此之外,这里最大的区别是 put 现在称为 uploadBytes