foreach循环不与谷歌云火库反应原生

时间:2018-03-02 18:56:54

标签: firebase react-native firebase-realtime-database google-cloud-firestore expo

我正在尝试从实时数据库迁移到使用expo的react-native中的firestore。为什么现在不能使用foreach循环工作?

RTDB

firebase.database().ref('messages').child(this.chatID).on('value', snap => {
        let messages = []
        snap.forEach(message => {
            messages.push(message.val())
        })
        this.setState({messages: messages})
    })

公司的FireStore

const unsubChat = firebase.firestore().collection('messages').doc(this.chatID).onSnapshot(docSnapshot => {    
        let messages = []
        const myMesgs = docSnapshot.data()
        if (docSnapshot.data()){
        myMesgs.forEach(message => {
            console.log(message)
        })
        }
    })

snap和myMesgs是相同的对象。尝试在myMesgs上使用.foreach时,我得到一个函数未定义错误。我想将myMesgs中每个对象的值推送到一个数组中。

enter image description here

1 个答案:

答案 0 :(得分:1)

改变这个:

 myMesgs.forEach(message => {
        console.log(message)
    })

到此:

docSnapshot.forEach(message => {
        console.log(message)
    })

此处有更多信息:https://firebase.google.com/docs/firestore/query-data/listen