PWA-Firebase:重新连接后,在离线模式下缓存的数据不会上传到Firebase

时间:2017-07-18 10:16:48

标签: javascript firebase firebase-realtime-database offline-caching progressive-web-apps

我正在开发一个渐进的网络应用程序,它将有一个表格(由农民填写)。

我正在使用localforage在离线模式下缓存我的数据。

  • 连接可用时: 从表单中获取的数据将在Firebase上推送。

  • 连接不可用时: 数据应该缓存在localforage缓存中。

重新连接后,缓存的数据应该推送到Firebase,但事实并非如此。

以下是代码:

离线代码

 const state = {
          isConnected: false,
        };

    const connectionRef = firebase.database().ref('.info/connected');

        const localforageToFirebase = messages => {
          if(messages && state.isConnected && firebase.auth.currentUser ){
            while( messages.length){
              pushToFirebase( messages.shift() );
            }
            localforage.setItem( 'offlineMessages', [] );
          }
        };

        connectionRef.on( 'value', snap => {
          state.isConnected = snap.val();
          localforage.getItem( 'offlineMessages' ).then( localforageToFirebase );
        });

推送到Firebase

const pushToFirebase = message => {
    firebase.database().ref('messages').push({ message });
  };


const messageFormSubmit = event => {
    event.preventDefault();
    const message = $( '#message' ).val();
    if( state.isConnected ){
      pushToFirebase( message );
    }
    else{
      localforage.getItem( 'offlineMessages' )
      .then( messages => {
        const msg = messages ? [...messages,message] : [message]; 
        localforage.setItem( 'offlineMessages', msg );
      });
    }
    $( '.message-form' ).trigger( 'reset' );
  }

我是PWA和Firebase&的新手。不知道究竟问题在哪里。 提前谢谢。

0 个答案:

没有答案