我正在尝试从实时数据库迁移到使用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中每个对象的值推送到一个数组中。
答案 0 :(得分:1)
改变这个:
myMesgs.forEach(message => {
console.log(message)
})
到此:
docSnapshot.forEach(message => {
console.log(message)
})
此处有更多信息:https://firebase.google.com/docs/firestore/query-data/listen