如何将个人资料链接上传到 Firebase 数据库



当我的">个人资料图像uUrl"显示在Firebase数据库中时,个人资料图片的链接丢失,这导致我的用户个人资料无法显示图像,因为Firebase数据库中没有链接 如何根据此问题重组代码

if let AuthData = AuthDataResult {
print(AuthData.user.email)
let dict : Dictionary < String, Any> = [
"uid": AuthData.user.uid,
"email": AuthData.user.email,
"ProfileImageUrl": "",
]
if let profileImge = self.selectedImage, let imageData = profileImge.jpegData(compressionQuality: 0.1) {
let StorageRef = Storage.storage()
.reference(forURL: "gs://tunnel-vision-458d6.appspot.com/")
let storageProfileRef = StorageRef.child("profileImage").child(AuthData.user.uid)
let metadata = StorageMetadata()
metadata.contentType = "profileImage.jpg"
storageProfileRef.putData(imageData, metadata: metadata) { (storageMetadata, error) in
if error != nil {
return
}
storageProfileRef.downloadURL { (url, error) in
if let metaImageUrl = url?.absoluteString {
print(metaImageUrl)
}

Database.database().reference().child("users").child(AuthData.user.uid).updateChildValues(dict, withCompletionBlock: {
(error,ref) in
if error == nil {
print("Done")
}

你在字典中为 ProfileImageUrl 分配一个空字符串:

let dict : Dictionary < String, Any> = [
"uid": AuthData.user.uid,
"email": AuthData.user.email,
"ProfileImageUrl": "",
]

而且你以后再也不会更新它了。 字典的编写方式与您在此处看到的完全一致。 在编写之前为其分配所需的值。

你需要

1-使dict成为变量

var dict : Dictionary < String, Any> = [
"uid": AuthData.user.uid,
"email": AuthData.user.email 
]

2-为ProfileImageUrl分配一个值,并在具有图像URL的storageProfileRef.downloadURL的回调中嵌入更新值

storageProfileRef.downloadURL { (url, error) in
if let metaImageUrl = url?.absoluteString {
print(metaImageUrl)
dict["ProfileImageUrl"] = metaImageUrl
Database.database().reference().child("users").child(AuthData.user.uid).updateChildValues(dict, withCompletionBlock: {
(error,ref) in
if error == nil {
print("Done")
}
}
}
}

最新更新