2016-11-26 17 views
1

私はReactアプリケーションを開発中で、組織の配列を状態ツリーに追加したいと考えています。私は現在しようとしていますFirebaseの複数の子供を反復する

return firebase.database().ref('/organizations/' + org).once('value').then((snapshot) => { 
     return snapshot.val(); 
     }); 

:各組織はによって取得することができます約束は状態に追加する前に解決されていないため、動作していない

var orgs = user.organizations.map((org)=> { 
    return firebase.database().ref('/organizations/' + org).once('value').then((snapshot) => { 
    return snapshot.val(); 
    }); 
}); 

this.setState({ 
    organizations: orgs, 
}); 

。誰にも解決策がありますか?

答えて

1

これらのケース内の溶液がにコールバックをスナップショットを必要とするコードを移動することです:

var ref = firebase.database().ref('/organizations/'); 
var promises = user.organizations.map(org => ref.child(org).once('value')); 
Promise.all(promises).then(snapshots => { 
    // all snapshots have loaded 
    // TODO: call this.setState() with all snapshots. 
}) 

これは良く読めば見てみましょう:

var promises = user.organizations.map(org => { 
    return firebase.database().ref('/organizations/' + org).once('value')0; 
}); 

Promise.all(promises).then(snapshots => 
    var orgs = snapshots.map(snapshot => snapshot.val()); 
    this.setState({ 
    organizations: orgs, 
    }) 
}) 
+0

はないことだけ追加することになります1つの組織の価値は 'this.state.organizations'ですか? – Turtle

+0

ああ良い点。私はそれほど注意を払っていませんでした。その場合は 'Promise.all()'が必要です。 –

関連する問題