私はFireBaseを初めて使いました。単純なデータベースを設定しようとしています。ここに私のデータがあります:AngularFire2 - 配列によるフィルタリスト
{
"employees" : {
"employee1" : {
"name" : "Anthony"
},
"employee2" : {
"name" : "John",
"reviews" : {
"review1" : true,
"review2" : true,
"review3" : true
}
}
},
"leaders" : {
"leader1" : {
"company" : "Strawberry",
"name" : "Martin",
"reviews" : {
"review1" : true
}
},
"leader2" : {
"company" : "Blueberry",
"name" : "Carlos",
"reviews" : {
"review2" : true,
"review3" : true
}
},
"leader3" : {
"company" : "Greenberry",
"name" : "Peter"
}
},
"reviews" : {
"review1" : {
"comment" : "Test1",
"date" : "Thu Jul 06 2017 14:00:51 GMT+0200 (CEST)"
},
"review2" : {
"comment" : "Test2",
"date" : "Thu Jul 06 2017 14:00:51 GMT+0200 (CEST)"
},
"review3" : {
"comment" : "Test3",
"date" : "Thu Jul 06 2017 14:00:51 GMT+0200 (CEST)"
}
}
}
}
は、私は次の機能が欲しい:
:- 投資家
- のレビューは、従業員によって書かれたレビューは、
私の質問は以下の通りゲット
- Is私のデータ構造は正しく、私の機能のニーズに応じて?
- 機能の実行にはどのようなクエリを使用しますか?私は最初にリーダーオブジェクトを取得し、次にリーダレビュー配列に基づいて何らかのフィルタを使ってレビューを取得することを考えました。
- リーダーと関連するレビューをすべて1つのクエリで取得することができれば、それは素晴らしいことです。
例として、leader1のレビューを取得したいとします。
db.object('/leaders/leader1').subscribe(res => {
this.leader = res;
//THIS IS THE PROBLEM: GET REVIEWS ON LEADER
db.list('/reviews', {
query: {
equalTo: this.investor.reviews
}
}).subscribe(queriedList => {
this.reviews = queriedList
});
});
ありがとうございます。
import { Component, OnInit } from '@angular/core';
import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2/database'
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit{
reviews: Array<FirebaseObjectObservable<any[]>> = [];
constructor(private fAuth: AngularFireAuth, private db: AngularFireDatabase) { }
ngOnInit() {
this.fAuth.authState.subscribe(user => { //check if the user is logged in if you don't care about it you can remove this
this.db.object('/leaders/leader1').subscribe(leader => {
this.reviews = Object.keys(leader.reviews).map(r => db.object('/reviews/' + r))
})
})
}
}
その後、あなたのテンプレートを使用すると、レビューをこのようにリストアップできます:あなたはleader1のレビューをこのように得ることができる
アドバイスの私の作品あなたには、「私です私の機能のニーズに応じて、正しいデータ構造ですか?このタイプの質問は、ここでstackoverflow上のトピックオフです。あなたの本当の問題は何ですか?今あなたの質問は広すぎます。 "質問を編集して、適切な回答を特定するのに十分な詳細で特定の問題に限定します。複数の異なる質問を一度に避ける[How to Ask](https://stackoverflow.com/help/how-この質問を明確にするための助けを求めるページ」を参照してください。 –
Fabioに応答する時間をとってくれてありがとう。私は、データ構造がStack Overflowで答えることを許されていないことを知らなかったので、私はそれを謝ります。しかし、データ構造の質問を削除すると、質問は1つしか残っていません - 機能を実行するためにどのようなクエリを使うべきですか?私の質問に答えるために欠けていることがあれば教えてください。 –
データ構造についてではなく、 "xが正しい"か "私はYを行ったか"という質問は、この最良の方法ですか? –