使用localforage存储的数据不会跨页面保留

时间:2017-05-29 15:23:44

标签: javascript localforage

在我的index.html中,我使用

保存了一些数据
localforage.getItem('data').then(function(value){
    if (!value) {
        localforage.setItem('data', ["test", "test test"]).then(function(value){
            console.log(value); // this get's displayed on when the data is been created which is the first time the page is loaded.
        }).catch(function(err){
            console.log(err);
        })
    } else {
        console.log(value); //after saving the value the first, it is always displayed here after page reloads
    }
});

现在在我加载第一页后加载的第二页中,这意味着必须保存'数据',我尝试使用以下代码检索数据。

 localforage.getItem('data').then(function(value){
     console.log(value); // this prints null
 }).catch(function(err) {
     console.log(err);
 });

1 个答案:

答案 0 :(得分:0)

通过尝试和错误我注意到了问题的原因。在存储数据的页面内,我包含了localforage库和另一个带有以下代码的javascript文件(database.js)。

$(document).ready(function() {
    const appName = "testApp";
    const storeName = "test_db";

    localforage.config({
        name: appName,
        storeName: storeName
    });

    localforage.getItem('data').then(function(value) {
        if (!value) {
            localforage.setItem('data', []).then(function(value) {
                console.log(value);
            }).catch(function(err) {
                console.log(err);
            });
         }
     })
});

然后我继续使用localforage.setItem()保存我的数据。在我的第二页中,我试图使用localforage检索存储在浏览器中的数据,但我没有包含此javascript。我只是包含了localforage库,我的猜测是当页面加载时,localforage创建一个具有不同名称的新商店。默认名称,因此我的localforage.getItem()正在查询没有保存数据的商店。包括database.js使localforage使用我使用localforage.config()配置的商店,现在在第二页中调用localforage.getItem()成功获取从第一页存储的数据。