Я пишу ионное приложение и подключаюсь к Google Firestore по angularfire2. Пользователь может управлять списком людей (добавление / удаление / редактирование) с атрибутами id и name.
В другом месте приложения они могут управлять другим объектом и выбирать человека из списка с помощью <select>
и <option>
, как вы обычно это делаете. Я сохраняю идентификатор человека в этом другом объекте.
Теперь я хочу показать имя человека в этом другом объекте, но мне не удается получить атрибут имени с помощью сохраненного идентификатора. У меня есть доступ ко всем объектам человека, как это:
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 };
});
});
и моя идея состояла в том, чтобы создать функцию, которая зацикливается на элементах и сравнивает их идентификаторы, возвращая name: string для правильного элемента, подобного этому:
getStringForId(personID) {
this.people.forEach(element => {
for (let elem of element) {
if (elem.id === personID) {
return elem.name;
}
}
});
}
elem.name может быть напечатано в консоли и выглядит как правильное имя. Моя проблема в том, что я потратил два дня, пытаясь понять, как правильно вернуть строку из этой функции, а не обещания, наблюдаемые или другие элементы, поэтому я могу сделать что-то вроде следующего в моем .html:
{{ package.personID? getStringForId(package.personID) : "-" }}
и покажите имя человека с его объектом.