[英]Firebase cloudstore collections map vs. forEach
我正在尝试使用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”不是一个函数。
我不知道我要去哪里旅行?
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
函数。
以我为例,我举了一个小例子更新了一些内容:
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.