Firestore / Javascript: Как получить данные из поля карты вложенного документа? - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу получить указанные c данные из карты моего поддокумента в firestore и отобразить их на странице моего веб-приложения. Я действительно не знаю, как вызвать данные во время var.textContent = doc.data(). части ...

Примечание: этапы - это карта поля

Изображение, чтобы помочь с моим вопросом:

enter image description here

Пока это то, что у меня есть:

<script>
firebase.auth().onAuthStateChanged(user => {
 if(user){
  this.userId = user.uid;
 } //stores the user id in variable

const fitbitremSleep= document.querySelector('#fitbitSleepListRemSleep');

function renderFitbitSleep(doc){

 let li = document.createElement('li');
 li.setAttribute('data-id', doc.id);

 let remSleep = document.createElement('span');
 let lbremSleep = document.createElement('span');

 remSleep.textContent = doc.data();
 lbremSleep.textContent = "Minutes of REMSleep:  ";  

 li.appendChild(lbremSleep);
 li.appendChild(remSleep);

 fitbitremSleep.appendChild(li);
 }

 let userRef1 = 
 firebase.firestore().collection("users").doc(userId).collection("fitbit_sleep").orderBy("dateAdded", 
 "desc").limit(1);
 return userRef1.get()
 .then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
   console.log(doc.id, " => ", doc.data());
   renderFitbitSleep(doc);
   });
  })
  .catch(function(error) {
   console.log("Error getting documents: ", error);
    });
   });
});
</script>

РЕДАКТИРОВАТЬ

Чтобы уточнить мой еще вопрос, возможно ли получить содержимое карты поля в firestore, используя doc.data()? Потому что я использовал doc.data(), чтобы получить поля вложенного документа.

ПРИМЕР

Потому что я использовал doc.data() для получить поля вложенного документа.

Мой код для установки поля не-карты:

minutesAsleep.textContent = doc.data().minutesAsleep;

обратите внимание, что: minutesAsleep не является Поле -map внутри вложенного документа уже имеется и может быть легко извлечено из базы данных с использованием вышеуказанного кода.

Поле minutesAsleep в базе данных: enter image description here

ОЖИДАЕМЫЙ ВЫХОД ПРИМЕРА: enter image description here

1 Ответ

0 голосов
/ 03 февраля 2020

После экспериментов и возни с кодом:

 remSleep.textContent = doc.data();
 lbremSleep.textContent = "Minutes of REMSleep:  ";

Замените на это:

 remSleep.textContent = doc.data().stages.remSleep;
 lbremSleep.textContent = "Minutes of REMSleep:  ";

, чтобы объяснить далее:

doc.data().

получает данные документов

затем

doc.data().stages

получает данные документов на этапах поля карты

наконец,

doc.data().stages.remSleep;

получает данные документации на этапах поля карты и получает данные remSleep под этой картой.

Я надеюсь, что это может помочь всем, особенно тем, кто разрабатывает с использованием javascript и Firebase:)

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