我必须做一堆ObjectKey并映射只是为了呈现一个列表,为什么这么麻烦,firebase是否为此内置了util?
onListenForMessages = () => {
this.setState({ loading: true });
this.props.firebase
.messages()
.orderByChild('createdAt')
.limitToLast(this.state.limit)
.on('value', snapshot => {
const messageObject = snapshot.val();
if (messageObject) {
const messageList = Object.keys(messageObject).map(key => ({
...messageObject[key],
uid: key,
}));
console.log('gg', messageList);
this.setState({
messages: messageList,
loading: false,
});
} else {
this.setState({ messages: null, loading: false });
}
});
};
答案 0 :(得分:0)
更新:您可能想看看https://stackoverflow.com/a/51794212/324977对Firestore上本机阵列操作的支持
这是因为Firebase基本上不真正支持数组。
Firebase的阵列支持 Firebase没有对数组的本机支持。如果存储数组,它实际上会存储为“对象”,并以整数作为键名。
// we send this
['hello', 'world']
// Firebase stores this
{0: 'hello', 1: 'world'}
参考:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html