firebase无需操作即可检索数组列表

时间:2019-02-06 01:49:18

标签: javascript reactjs firebase

我必须做一堆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 });
        }
      });
  };

1 个答案:

答案 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