如何使用angularfire2从Firestore文档获取属性?

时间:2019-01-12 13:30:26

标签: javascript angular google-cloud-firestore

我正在编写一个离子应用程序,并通过angularfire2连接到Google Firestore。用户能够使用属性id和name管理人员列表(添加/删除/编辑)。
像通常一样,他们可以在应用程序的其他地方管理另一个对象,并通过<select><option>从列表中选择一个人。我将该人的ID保存在另一个对象中。
现在,我想显示另一个对象中的人名,但是我无法通过使用保存的ID来检索name属性。我可以访问所有这样的人对象:

let people = this.db.collection('person').snapshotChanges()
        .map(actions => {
            return actions.map(a => {
                //Get document data
                const data = a.payload.doc.data();
                //Get document id
                const id = a.payload.doc.id;
                //Use spread operator to add the id to the document data
                return { id, ...data };
            });
        });

我的想法是创建一个循环遍历元素并比较其id的函数,返回正确的元素的name:string,如下所示:

getStringForId(personID) {
  this.people.forEach(element => {
      for (let elem of element) {
          if (elem.id === personID) {
              return elem.name;
          }
      }
  });

}

可以在控制台中打印出

elem.name,它似乎是正确的名称。我的问题是,我花了两天时间试图弄清楚如何从该函数正确返回字符串,而不是promise,observables或其他元素,因此我可以在.html中执行类似以下操作:

{{ package.personID? getStringForId(package.personID) : "-" }}

并显示带有对象的人的名字。

0 个答案:

没有答案