2

アイテムの注文からすべてのアイテムを取得する必要があると仮定します。loopfalls angularfire2リスト

  • 私は、各項目のキーの上に順
  • 反復から項目キーを取得し、アイテムの詳細を取得するには、各.database.objectに加入する必要があります。

let myItems = []; 
let orderItems = this.af.database.list('/order_items'); 

this.orderItems.subscribe((itemKeys) => { 
    itemKeys.forEach((itemKey) => { 
    let item = this.af.database.object('/items/'itemKey.$value); 

    item.subscribe((itemData) => { 
     myItems.push(itemData); 
    }); 

    }); 
}); 

orderItemsサブスクリプションがまだ終了していないとforEachが実行されるので、これは問題となる可能性があります。 Ofcourse私は後で複製のリストを確認することができますが、私はかなり良い方法があると確信しています。

私の質問 - これを行うには良い方法はありますか?

答えて

2

ここに記載されているようにpreserveSnapshotオプションを指定することで、元のスナップショットとしてデータを取得できると思います。 Retrieving the snapshot 必要に応じて繰り返してください。

let myItems = []; 
let orderItems = this.af.database.list('/order_items', 
    { preserveSnapshot: true } 
); 

this.orderItems.subscribe((itemKeys) => { 
    itemKeys.forEach((itemKey) => { 
    let item = this.af.database.object('/items/'+itemKey.key); 

    item.subscribe((itemData) => { 
     myItems.push(itemData); 
    }); 
    }); 
}) 

は、私はあなたにも、すぐにここのようなものorder_itemsへの鍵とitemsをマップすることができると思う:AngularFire for Angular 2を、私はNG2、AF2とfirebaseに新しいですので、私は、これを行う方法を確認していません。

+0

'preserveSnapshot'が何をするのか分かりませんが、問題は残っています。これはそれとは関係ありません。この問題は、観測可能なストリームが良くないために起こると私は思う。 – TheUnreal

関連する問題