Как получить свойства объекта из DocumentSnapshot firestore?

128
07 ноября 2019, 11:10

В сервисе получаю documentSnapshot документа из firebase.

  getBelbinById(id: string) {
    return this.afs.collection('belbin').doc(id).get();
  }

В компоненте подписываюсь на этот сервис и получаю этот documentSnapshot по подписке:

this.sub = this.belbinService.getBelbinById(this.personId)
.subscribe((documentSnapshot: firebase.firestore.DocumentSnapshot) => {
  console.log(documentSnapshot.data());
}

На этом у меня начинаются проблемы, так как не могу ничего сделать с data() - нет доступа к свойствам объекта... Сам объект имеет вид и нормально выводится в консоль ()

{ id: "ya1jibU2pZx1niGiuAmp"
  qwCF: [0, 0, 2, 0, 0, 6, 2]
  qwCO: [0, 0, 0, 0, 2, 0, 0]
  qwIMP: [10, 0, 2, 2, 2, 4, 0]
  qwME: [0, 4, 0, 4, 2, 0, 0]
  qwPL: [0, 0, 0, 0, 0, 0, 0]
  qwRI: [0, 2, 2, 2, 2, 0, 0]
  qwSH: [0, 0, 0, 0, 0, 0, 0]
  qwTW: [0, 4, 4, 2, 2, 0, 8] }

Сломал голову, почему не могу получить доступ к свойствам data(), подскажите в чем проблема? Доступ пробую получить так:

this.sub = this.belbinService.getBelbinById(this.personId)
.subscribe((documentSnapshot: firebase.firestore.DocumentSnapshot) => {
  this.id = documentSnapshot.data().id;
  this.qwCF = documentSnapshot.data().qwCF;
}
Answer 1

Подсказали в англоязычной ветке. Оказывается, нужно было сначала из documentSnapshot создать переменную. Уже после этого получать доступ к ее свойствам. Не понимаю, почему нужна эта итерация, но это работает.

this.sub = this.belbinService.getBelbinById(this.personId)
.subscribe((documentSnapshot: firebase.firestore.DocumentSnapshot) => {
  const data = documentSnapshot.data();
  this.qwCF = data.qwCF;
}
READ ALSO
Сортировка колонок в таблице с помощью sortBy (lodash)

Сортировка колонок в таблице с помощью sortBy (lodash)

Для сортировки колонок в таблице использую sortBy (lodash)Не могу додуматься как передать sortColumn из state компонента

140
Как собрать vue-проект в один js-файл?

Как собрать vue-проект в один js-файл?

нужно проект на vue собрать в один файл (например appjs) Для создания проекта использовал vue-cli-3 и команду vue create <my-project>

102
при поиске исчезает запятая в массиве

при поиске исчезает запятая в массиве

В общем при поиске, исчезает запятая если 2 должностиЕсли искать вручную имя, то запятая присутствует

96
Вспомогательные методы при отрисовке

Вспомогательные методы при отрисовке

Есть чат, в котором списком выводятся сообщения:

115