Хранение AngularFire - TypeError: Невозможно прочитать свойство 'then' из неопределенного - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу загрузить файл в свое хранилище Firebase, и я хочу получить процент загрузки и, в конце, URL загрузки.

Я пробовал все, что мог, но у меня есть:

TypeError: Невозможно прочитать свойство 'then' с неопределенным значением

Это моя функция:

$scope.createCatalog = function(catalog,uid,setColor,setBg){
    console.log(catalog);
    StorageService.put(catalogs,uid,medias,catalog.logo).then(function(success){
      console.log(success);
    })
}

Это мой код в моем сервисе:

put : function(name,userID,item,data){
      var itemRef = firebase.storage().ref().child("users").child(userID).child(name).child(item);
      var itemFile = $firebaseStorage(itemRef);
      var uploadTask = itemFile.$put(data);
      uploadTask.$progress(function(snapshot) {
        var percentUploaded = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        return percentUploaded
      });
      uploadTask.$complete(function(snapshot) {
        return snapshot.downloadURL
      });
}

Спасибо всем!

1 Ответ

0 голосов
/ 07 ноября 2019

Попробуйте вернуть обещание:

put : function(name,userID,item,data){
      var deferred = $q.defer();
      var itemRef = firebase.storage().ref().child("users").child(userID).child(name).child(item);
      var itemFile = $firebaseStorage(itemRef);
      var uploadTask = itemFile.$put(data);
      uploadTask.$progress(function(snapshot) {
        var percentUploaded = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        deferred.notify(percentUploaded);
      });
      uploadTask.$complete(function(snapshot) {
        deferred.resolve(snapshot.downloadURL);
      });
      return deferred.promise;
}

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...