如何查询AngularFire2 / FireStore中的子集合?

时间:2017-10-18 07:57:26

标签: angularfire2 google-cloud-firestore

我正在尝试使用FireStore查询AngularFire2中的子集合但没有成功。已搜索但未找到合适的解决方案。

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>

我是新手。

1 个答案:

答案 0 :(得分: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);