如何将AngularFirestoreCollection的结果提取到数组

时间:2017-12-08 11:02:40

标签: angular angularfire2 google-cloud-firestore

我正在尝试开发的应用程序允许使用Material2 Select输入字段选择语言。可用语言保存在Firestore文档集中。我使用AngularFirestoreCollection来检索它们,但无法找到如何从结果中提取语言名称并将它们放入数组中。

我已经搜索了示例和教程,阅读并重新阅读了文档页面,并使用'* ngFor'找到了许多示例,但我找不到任何使用'map',我怀疑这是我需要使用的。

提前谢谢你。

  languageid: string;
  languageName: string;
  languageCollection: AngularFirestoreCollection<any> = this.afs.collection('Countries/AU/cLanguage');
  languagecollection = this.languageCollection.valueChanges();
  languages: string[];

我想映射“languagecollection = this.languageCollection.valueChanges();”到阵列。

2 个答案:

答案 0 :(得分:0)

我认为你可以尝试以下方法:(未经测试。如果错误则评论)

let languages: string[];
let collection = this.afs.collection('Countries/AU/cLanguage').valueChanges();

//if you want to Firebase's .once(), use take(1)
let storeTask = collection.subscribe((langs) => {
    languages = langs;

    //Or 
    /*Object.keys(langs).map(function(key, index) {
       languages.push(langs[key].name)
    });*/
});

答案 1 :(得分:0)

我发现这段代码完成了我需要的工作

querySnapshot.forEach(function (doc) {
    let name = doc.data()['languageName']; 
    lang.push(name);
  });
});