首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebase cloudstore集合映射与forEach

Firebase cloudstore集合映射与forEach
EN

Stack Overflow用户
提问于 2018-06-06 05:04:30
回答 2查看 1.3K关注 0票数 3

我正在尝试使用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‘不是一个函数。

我不知道我在哪里被绊倒了?

EN

回答 2

Stack Overflow用户

发布于 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函数。

票数 1
EN

Stack Overflow用户

发布于 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();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50708895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档