Как получить собственность из документа пожарного магазина, используя angularfire2? - PullRequest
0 голосов
/ 12 января 2019

Я пишу ионное приложение и подключаюсь к 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) : "-" }}

и покажите имя человека с его объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...