我正在开发一个渐进的网络应用程序,它将有一个表格(由农民填写)。
我正在使用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&的新手。不知道究竟问题在哪里。 提前谢谢。