2017-08-23 7 views
0

Ich habe Schwierigkeiten, einen Wert von Join zurückzugeben. Ich denke, dass das Problem darin besteht, das "Rückkehr" -Wort zu setzen, aber ich kann keine Dokumentation darüber finden.Rückgabe eines Ergebnisses von Join

Ich habe einige Kommentare in Code, um mein Problem besser zu erklären.

this.databaseService.getAlbumName(0).then(result =>{ 
    return result; 
}).then(snap => { 
    //snap return what I want so albumName. 
    //Problem start when getPhotosFromAlbum(snap) kicks is. 
    return this.databaseService.getPhotosFromAlbum(snap).then(photoResult => { 
     //Am I returning value(array) from getPhotosFromAlbum(snap) in correct place? 
     return photoResult; 
    }).then(snapp => { 
     //this part if just to display photoResult which is currently equal 
     //to [Object object] 
     console.log('array of photos: ' + snapp); 
    }) 

Und:

public getPhotosFromAlbum(albumName: string): any{ 
     //getting access to all Photos in album 
     let photosInAlbum = firebase.database().ref('PhotosInAlbum' + '/' + albumName) 
     return photosInAlbum.once('value', snap => { 
      let photoRef = this.databaseRef.child('Photo'); 
      photoRef.once('value', photoSnap => { 
       let photos = photoSnap.val(); 
       //creating an accessible array 
       let keys = Object.keys(photos); 
       var k = []; 
       for(var i = 0; i < keys.length; i++){ 
        k.push(keys[i]); 
       } 
       console.log('From get Function: ' + k); 
       return k; 
      })  
     }) 
    } 

Antwort

0

Ihr getPhotosFromAlbum kein Versprechen zurück, wie weit ich sehen kann.

public getPhotosFromAlbum(albumName: string): any{ 
    let photosInAlbum = firebase.database().ref('PhotosInAlbum' + '/' + albumName) 
    return photosInAlbum.once('value').then(snap => { 
     let photoRef = this.databaseRef.child('Photo'); 
     return photoRef.once('value').then(photoSnap => { 
      let photos = photoSnap.val(); 
      //creating an accessible array 
      let keys = Object.keys(photos); 
      var k = []; 
      for(var i = 0; i < keys.length; i++){ 
       k.push(keys[i]); 
      } 
      return k; 
     })  
    }) 
} 

Die innerste Zuhörer ziemlich gewundener Weg zu sein scheint, zu tun:..

 return photoRef.once('value').then(photoSnap => { 
      return Object.keys(photoSnap.val()); 
     })  
+0

Ich habe versucht, legte seine Linie „Rückkehr photosInAlbum.once (‚value‘) dann und so ein Ich tat dies, in getAlbumName funktioniert es, aber in getAlbumName gibt es keinen Join. geTPhotosFromAlbum enthält einen Join, und ich weiß nicht, wo ich "k" zurückgeben soll. – Trefl

+0

Ich habe getan wie du mir gesagt hast, leider wenn ich console.log (photosnap.val()) kurz vor der Rückkehr zeigt es an, was ich will, aber wenn ich außerhalb dieser Versprechenskette darauf zugreifen möchte, gibt es [Object object] – Trefl

+0

okey seine Arbeit! cheers. snapp.val() war die Antwort! – Trefl

Verwandte Themen