【问题标题】:Angularfire 2 Firebase storage nested subscribeAngularfire 2 Firebase 存储嵌套订阅
【发布时间】:2017-09-14 17:41:18
【问题描述】:

我正在准备更新表格。

我有一个组件和一个服务,它们从 Firebase 数据库中获取带有 $id 的帖子详细信息作为 Angularfire2 FirebaseObjectObservable。

然后调用服务从页面加载 Ionic 2 上的 firebase 存储中获取图像的元数据。

但是在页面加载后服务获得结果时可以观察到。所以表单输入总是空的。

是否可以等待回调获取 Firebase 存储元数据然后继续?

这是组件

ionViewDidLoad()  {
    let loading = this.loadingCtrl.create({
      spinner: 'hide',
      content: 'Loading Please Wait...'
    });
   
    loading.present();
    this.categories = this.af.database.list('/Categories');
    let id = this.navParams.get('id'); 
    
    this.post = this.af.database.object(`/Posts/${id}`);
    
    this.post.subscribe(snapshot => {
      
      this.uploadImagesService.getMetaData(snapshot.postpicurl).subscribe((metadata:any) =>{
        //Set Form values   
        this.CreatePost.get('title').setValue(snapshot.title);
        this.CreatePost.get('content').setValue(snapshot.content);
        this.uploadedpic.name = metadata.name;
        this.uploadedpic.size = metadata.size;

      });
      console.log(snapshot);
      
    });
    
      
    loading.dismiss();
      
  }

这是元数据服务

getMetaData(url:string){
   return Observable.create((observer:any) => {
     let metaDataRef = firebase.storage().refFromURL(url);
     metaDataRef.getMetadata().then(function(metadata) {
      // Metadata now contains the metadata for 'images/forest.jpg'
       observer.next(metadata);
      //observer.complete(metadata);
     }).catch(function(error){
       observer.error(error);
     });
   });

【问题讨论】:

    标签: javascript ionic2 observable firebase-storage angularfire2


    【解决方案1】:

    我这样解决了。因为我了解到 firebase 总是返回承诺。

    getMetaData(url:string){
     
       return new Promise((resolve, reject) => {
         let metaDataRef = firebase.storage().refFromURL(url);
         const getmetadata = metaDataRef.getMetadata().then(resolve, reject);
         getmetadata.then((metadata:any) =>{
           resolve(metadata);
         },(error:any) =>{
           reject(error);
         });
     
       });
     }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2015-11-05
      • 2018-09-21
      • 2022-01-24
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多