Проблема с созданием токена при получении изображения из firebase в реакции native - PullRequest
0 голосов
/ 23 февраля 2020

Я загружаю изображение и сохраняю его в хранилище 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!!!');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...