Firestore / Javascript:如何从子文档的地图字段获取数据?

时间:2020-02-02 21:59:20

标签: javascript firebase google-cloud-firestore

我想从Firestore中的子文档地图中获取特定数据,并将其显示在Web应用程序页面中。我真的不知道如何在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>

编辑

为进一步阐明我的问题,是否可以使用doc.data()在firestore中获取字段地图的内容?因为我一直在使用doc.data()来获取子文档的字段。

示例

因为我一直在使用doc.data()来获取子文档的字段。

我用于设置非地图字段的代码:

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

请注意:minutesAsleep已经是子文档中的非地图字段,可以使用上述代码轻松地从数据库中拉出。

数据库中的

字段minutesAsleepenter image description here

示例的预期输出: enter image description here

1 个答案:

答案 0 :(得分:0)

尝试并修改代码后:

 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;

在地图字段阶段下获取docs数据,并在该地图下获取remSleep的数据。

我希望这可以对任何人有所帮助,尤其是那些使用javascript和firebase开发的人:)