我正在尝试使用map函数来创建从集合返回的项的数组。
我的实现是使用forEach进行迭代,效果很好。但是,我不能让它与map函数一起工作。
代码如下:
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‘不是一个函数。
我不知道我在哪里被绊倒了?
发布于 2018-06-06 05:07:48
snap
可能不是真数组。它可能是某种类似数组的对象。尝试使用扩展运算符(...
)创建一个新数组,然后对其进行操作,如下所示:
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
函数。
发布于 2018-06-06 05:15:01
举个小例子,在我的例子中,我正在更新一些东西:
const query = ...collection("notes").doc(this.props.id).collection('items');
query.snapshotChanges().map(changes => {
changes.map(a => {
const id = a.payload.doc.id;
this.db.collection("notes").doc(this.props.id).collection('items').update({
someItemsProp: newValue,
})
})
}).subscribe();
}
https://stackoverflow.com/questions/50708895
复制相似问题