2017-10-18 16 views
0

AngularFire2のサブコレクションをFireStoreで照会しようとしましたが、成功しませんでした。検索しましたが、適切な解決策が見つかりませんでした。AngularFire2/FireStoreのサブコレクションを照会する方法は?

ngOnInit() { 
// this does work 
this.africaCollection = this.afs.collection('Country', ref => ref 
.where('code', '==', 'za')); 
this.countriesAfrica = this.africaCollection.valueChanges(); 

// this does not work 
this.townCollection = this.afs.collection('Country').doc('za')       
.collection('Towns'); 
this.towns = this.townCollection.valueChanges(); 
{ 

私のHTMLは次のようになります。

<div> 
    <table> 
    <tr *ngFor="let town of towns | async"> 
     <td>{{ town.name }}</td> 
    </tr> 
    </table> 
</div> 

私はこれで初心者です。

+0

問題を再現するためにstackblitz.comを使用できますか? (私はAngularFireの作者です) –

+0

こんにちはDavid - stackblitzを使用するのが難しいですが、私はgithub https://github.com/JacquesSchalkwyk/Firestore-Qryで試してみました。これが助けてくれるといいなあ現在、私のdbには誰もが読み書きできるデフォルトのルールがあります。構造はCountry-Towns-Listingsです –

+0

私はルールを設定します:-service cloud.firestore { 一致/データベース/ {データベース} /ドキュメント{ の一致/国/ {国} { は、 } } } –

答えて

1

あなたのルールに関連している可能性があります。

デフォルトルールここではルールについて

service cloud.firestore { 
    match /databases/{database}/documents { 
    match /{document=**} { 
     allow read, write; 
    } 
    } 
} 

詳細:

https://firebase.google.com/docs/firestore/security/secure-data#rules_dont_cascade

あなたは、そのコレクション内の項目

を持っています。またに項目を追加できることを確認しますあなたのコレクションを確実にコードで正しく配置されています。 Firebaseコンソールを見て、それが置かれている場所を見ることができます。

var town: Town = { 
    name: "town name", 
    region: "region name" 
}; 
this.afs.collection('Country').doc('za').collection('Towns').add(town); 
+0

私はサービスcloud.firestore { 一致/データベース/ {データベース} /文書{ 一致/国/ {国} /町は、/ {町} {にルールを設定するとき できるように読み、書きます。 } } }私の最初のqryは実行されますが、2番目のアクセス許可のエラーで失敗します –

+0

私はルールの例を更新しました。そのバージョンではまだパーミッションエラーが出ますか?そうでない場合は、他のエラー? – Remi

+0

ありがとうございます。試して結果を投稿します。 –

関連する問題