我正在尝试使用map函数来创建从集合返回的项目数组。
我的实现是使用forEach迭代哪个工作正常。但是,我无法使用地图功能。
以下是代码:
firestore.collection("notes").doc(this.props.id).collection('items').get()
.then((snap) => {
let items = []
snap.forEach((doc) => {
items.push({id:doc.id,text:doc.data().text})
console.log(`${doc.id} => ${doc.data()}`);
});
console.log(items)
});

但是,这不起作用:
firestore.collection("notes").doc(this.props.id).collection('items').get()
.then((snap) => {
let items = snap.map((doc) => {
return {id:doc.id, text:doc.data().text}
})
console.log(items)
});

它拍摄了一个“snap.map'不是一个功能。
我无法弄清楚我在哪里绊倒?
答案 0 :(得分:5)
forEach方法存在,但不存在地图。
但是你可以获得一个docs数组:
QuerySnapshot中所有文档的数组。
您可以在其中调用地图,如下所示:
let items = snap.docs.map(doc => {
return { id: doc.id, text: doc.data().text }
})
答案 1 :(得分:1)
snap
可能不是真正的数组。它可能是某种类似数组的对象。尝试使用spread运算符(...
)创建一个新数组,然后对其进行处理,如下所示:
firestore.collection("notes").doc(this.props.id).collection('items').get()
.then((snap) => {
let items = [...snap].map((doc) => {
return {id:doc.id, text:doc.data().text}
})
console.log(items)
});
那应该将它转换为一个真正的数组,这将使你能够使用.map
函数。
答案 2 :(得分:0)
一个小例子,就我而言,我更新了一些东西:
<section ng-repeat="tienda in datosTiendas | filter: { ventaIndividualRedondeadaParaDisplay: searchbox } | limitTo:1">