firebase与本机反应太慢

时间:2016-09-30 16:19:06

标签: javascript firebase react-native

我使用firebase 3.4.1和react-native 0.34.1。

我惊讶地发现从firebase接收检索到的数据非常慢。

这是我的反应原生测试代码。

class test1 extends Component {
    constructor(){
        super();

        let config = {
            apiKey: "xxxxxxxxxxxxxx",
            authDomain: "yyyyyyyy.firebaseapp.com",
            databaseURL: "https://zzzzzz.firebaseio.com",
        };

        Firebase.initializeApp(config);

        this.rootRef = Firebase.database().ref();
        this.postRef = this.rootRef.child('posts');

        this.state = {
           like : 'like : ',
           comment : 'comment : ',
        };

    componentWillMount(){
        console.debug('componentWillMount');
        let num = 0;
        let time = new Date().getTime();
        this.postRef.orderByKey().limitToLast(10).once('value')
        .then((postsnap) => {
            console.debug(new Date().getTime() - time);
            postsnap.forEach((postItem) => {
               console.debug(num++);
               console.debug(new Date().getTime() - time);
               this.setState({
                  like : this.state.like + postItem.child('like').numChildren() + ', ',
                  comment : this.state.comment + postItem.child('comment').numChildren() + ', ',
               });
            });
         });
     }

     render() {
         return (
            <View style={styles.container}>
                <Text>
                {this.state.like}
                </Text>
                <Text>
                {this.state.comment}
                </Text>
            </View>
         );
     }
}

我的firebase数据库结构非常简单, &#39; rootref&#39;只有6个帖子&#39;。

componentWillMount
8760
0
8761
1
8766
2
8767
3
8768
4
8769
5
8772

你们有没有想过更快地从firebase检索数据?

1 个答案:

答案 0 :(得分:0)

使用单例模式获取Reference要好得多。不是每次都调用Firebase.initializeApp,而是通过将其放在一个单独的模块中使其成为全局的。然后,将实例化的引用导出到Firebase.database().ref()。并在整个应用程序生命周期中使用它。

无论如何,我发现,即使我使用这种方法,我获得的1节点查询(node/key)的最小加载时间约为200毫秒,这实在很慢。