Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Angular firestore返回firebase中的子集合_Javascript_Firebase_Google Cloud Firestore_Angularfire2 - Fatal编程技术网

Javascript 使用Angular firestore返回firebase中的子集合

Javascript 使用Angular firestore返回firebase中的子集合,javascript,firebase,google-cloud-firestore,angularfire2,Javascript,Firebase,Google Cloud Firestore,Angularfire2,我有一个称为“另存为嵌套集合”的子集合供每个用户使用。 用户有自己的字段和保存的字段集合,其中包含两个字段和一个数组。我只能显示用户字段,但我不知道访问每个用户子集合的正确方法 export class SavedComponent implements OnInit{ public saved: Saved[]; public currentUser: any = null; public user: User; private subscriptions: Subscrip

我有一个称为“另存为嵌套集合”的子集合供每个用户使用。 用户有自己的字段和保存的字段集合,其中包含两个字段和一个数组。我只能显示用户字段,但我不知道访问每个用户子集合的正确方法

 export class SavedComponent implements OnInit{
  public saved: Saved[];
  public currentUser: any = null;
  public user: User;
  private subscriptions: Subscription[] = [];

  constructor(

    // Adding saved service
    private savedService: SavedService,
    private auth: AuthService,
    private loadingService: LoadingService,
    private route: ActivatedRoute,
    private db: AngularFirestore
  ) {
    // this.loadingService.isLoading.next(true);
}

    this.subscriptions.push(
      this.auth.currentUser.subscribe( user => {
        this.currentUser = user;
        this.loadingService.isLoading.next(false);
        // Console log the current authentiucated user 
        console.log(this.currentUser);
      })
    );

    this.subscriptions.push(
      this.route.paramMap.subscribe( params => {
        const userId = params.get('userId');
        const userRef: AngularFirestoreDocument<User> = this.db.doc(`users/${userId}`);
        userRef.valueChanges().subscribe(user => this.user = user);
      })
    )


   // Example of html template

    <div class="row justify-content-center">
        <div class="col-xs-12 col-sm-8 col-md-6 text-center name">
            {{user?.firstName}} {{user?.lastName}}
        </div>
    </div>


正如Frank van Puffelen所评论的,访问用户子集合的最佳选择是

    this.db.collection(`users/${userId}/saved`)
要访问保存的子集合,您需要首先访问用户集合中的用户文档。根据这一点,要访问子集合的文档,可以选择访问集合,然后访问文档,依此类推,以访问子集合或子集合的文档

不能引用集合中的集合或文档中的文档


必须为集合或子集合指定this.db.collection,为集合或子集合的文档指定this.db.doc。

this.db.collection`users/${userId}/saved`?我已创建了一个服务,希望在其中访问集合。由于我是新手,我可能会犯一些新手错误。我正在试图弄清楚为什么is说在savedService中找不到userId,因为我已经实现了auth服务和user observable。例如,我试图在savedService中编写代码,为每个用户返回已保存的集合字段。有些地方似乎不清楚:您可以访问用户字段,这意味着您可以使用用户ID查询用户文档,但您无法查询用户的子集合,它会抛出一个找不到的关于用户ID的错误?同时提供您在savedService中使用的代码。如果在userId上找不到我,请阅读我对Frank comment先生的评论。谢谢