如何访问子节点Firestore-forEach函数未定义

时间:2019-05-10 14:38:06

标签: javascript firebase google-cloud-firestore

我正在尝试遍历Firestore中给定集合的节点,但似乎不起作用。我是Java语言的新手,所以我对数据的结构不太清楚。

以下代码是我的尝试。我失败了,因为它出现了一个错误,告诉我forEach()函数未定义。但是,这对我来说没有意义。 This documentation显示get函数的返回为Promise<QuerySnapshot>。在序列上,this doc显示了QuerySnapshot对象的方法,并显示了forEach方法。

 var myarray = firebase.firestore().collection('cards').get();  
 myarray.forEach( k => {
    console.log(k)
 });

我来这里寻求帮助。有人可以向我解释为什么给定对象不存在forEach方法,如何在cards集合的子节点上进行迭代,以便检查其属性?

2 个答案:

答案 0 :(得分:3)

firebase.firestore().collection('cards').get().then(snapshot => {

    snapshot.forEach(doc => {
        console.log(doc.data());
    });

});

then()方法返回一个Promise。基本上,您需要等到从Firebase返回数据后才能访问和使用它。然后,您只需要遍历从promise返回的快照。

答案 1 :(得分:0)

尝试进行console.log(firebase.firestore()。collection('cards')。get());

它看起来可能是null或其他名称,但显然不是数组,否则.forEach()方法应该可以工作,

这样做时可以看到:

    var myarray = [1,2];  
 myarray.forEach( k => {
    console.log(k)
 });

https://jsfiddle.net/21c9sf7L/