Я загружаю изображение и сохраняю его в хранилище firebase, затем получаю URL и сохраняю его в атрибут профиля пользователя базы данных firebase в реальном времени pi c. Проблема возникает, когда токен URL автоматически изменяется.
Когда я получаю базу данных пользователей, токен их профиля pi c отличается от хранилища базы данных. Как я могу отсортировать это?
Вот мой код:
uploadImage = async (uri) => {
var that = this;
var userid = f.auth().currentUser.uid;
var imageId = this.state.imageId;
var re = /(?:\.([^.]+))?$/;
var ext = re.exec(uri)[1];
this.setState({
currentFileType: ext
});
const response = await fetch(uri);
const blob = await response.blob();
var FilePath = imageId + '.' + that.state.currentFileType;
const refer = storage.ref('user/' + userid + './img').child(FilePath);
console.log(this.state.currentFileType)
var snapshot = refer.put(blob).on('state_changed', snapshot => {
var progress = ((snapshot.bytesTransferred / snapshot.totalBytes) * 100).toFixed(0);
console.log("Upload is " + progress + "% complete");
that.setState({
progress: progress
});
},
function(error) {
console.log('Error with upload = ' + error);
},
function() {
refer.put(blob).snapshot.ref.getDownloadURL().then(function(downloadURL) {
console.log(downloadURL);
that.processUpload(downloadURL);
})
}
)
}
processUpload = (imageUrl) => {
console.log(imageUrl)
database.ref('users').child(auth.currentUser.uid).
update({
"avatar": imageUrl
});
var that = this;
database.ref('users').child(auth.currentUser.uid).on('value', (snapshot) => {
var userdata = that.state.userdata;
if (snapshot.val() !== null) {
for (var u_data in snapshot.val()) {
var userObj = snapshot.val()[u_data];
console.log(userObj)
userdata.push({
avatar: imageUrl
// name: "testing"
});
}
} else {
console.log("done")
}
})
that.loadFeed();
that.setState({
progress: 100
});
alert('UPLOADED!!!');
}