我正在编写一个离子应用程序,并通过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) : "-" }}
并显示带有对象的人的名字。