在Angular方法中循环遍历AngularFirestoreCollection Observable

时间:2017-10-22 22:46:28

标签: angular angularfire2 google-cloud-firestore

我正在将Angularfire2与新的Firestore数据库一起使用。在我的方法中,我正在进行这样的查询:

const questionsRef = this.afs.collection('questions', ref => ref.where('category', '==', category).limit(10));

现在我需要在循环中获取结果,以便我可以操作数据并使用该结果中的值在不同的集合中创建新文档。

这是从集合返回的其中一个文档的结构:

{
  "description": "Test question",
  "category": "dOULqW4jMkC4E4iopOyk",
  "answers": [
    {
      "description": "test answer",
      "correct": true
    },
    {
      "description": "test answer 2",
      "correct": false
    }
  ]
}

我想复制questionsRef返回的结果,但为每个名为"selected": false的答案添加一个新字段。

我意识到我还需要等到所有数据都加载完毕,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我现在正在FB集合上经历同样的事情。我认为要实现这一目标需要转变思路,但我仍在努力。这是一个SO post,但我只是像这样遍历整个集合:

      var questionsRef = this.afs.collection('questions', ref => {
         return ref.where('category', '==', category).limit(10);
      });

      var questionsCol = questionsRef.snapshotChanges().pipe(
         map(actions => actions.map(a => {
            return a.payload.doc.data(); // get id using a.payload.doc.id
         }))
      );

      questionsCol.forEach(doc => {
         // operate on the doc here...
      });

希望有帮助。