AngularFire 2 Firebase存储嵌套订阅



im准备更新表格。

我有一个组件和一项服务,该服务正在获取邮政详细信息,并从firebase数据库中获得$ id作为angularfire2 firebaseObjectObservable。

然后致电服务以从pageload 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);
     });
   });

i这样解决。因为我了解到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);
     });
 
   });
 }

相关内容

  • 没有找到相关文章

最新更新