Нужен путь хранения образа Firebase, но StorageRef возвращает обещание - PullRequest
0 голосов
/ 13 июня 2019

Я хочу отобразить список изображений, сохраненных в firebase, в плоском списке, но функция возвращает обещание вместо URL.Как я могу решить это?Я использовал асинхронное ожидание в функции.Я думаю, что это дает мне обещание, но если я удаляю async, это дает ноль, так как требуется время, чтобы получить url из базы данных.Я пытался в течение недели, но не могу решить это.Любая помощь приветствуется.Спасибо

Код:

renderList = (item) => {
    return (
      <View style={{ marginBottom: 15, marginLeft: 10 }}>
        <Text>{`Date: ${item.Date}`}</Text>

        {/*
        <Image
            source={{ uri: `${this.getImageUrl(item.FileName)}` }} style={{ width: 100, height: 100 }}
        />*/}

        <Text>{`${this.getImageUrl(item.FileName)}`}</Text> //it gives object object
      </View>
    );
}


getImageUrl = async(fileName) => {
    let urll;
    const { currentUser } = firebase.auth();
    const storageRef = firebase.storage().ref().child(`${currentUser.uid}/${fileName}.PNG`);
    await storageRef.getDownloadURL().then(function(url) {
        urll = url;
        console.log('zzz', url); //it gives valid url
    }, function(error){
        console.log(error);
    });
    return urll; //it returns object object (promise)
}

render() {

    return (
      <View style={styles.container}>
        <FlatList
          data={listArray}
          renderItem={({ item }) => this.renderList(item)}
        />
      </View>
    );
}

1 Ответ

0 голосов
/ 14 июня 2019

Я думаю, что вы получаете объект, потому что именно для этого предназначен firebase.storage.https://firebase.google.com/docs/reference/android/com/google/firebase/storage/FirebaseStorage.html Теперь вы сможете проверить возвращенный объект url и получить доступ к необходимым данным внутри объекта.

...