Данные, хранящиеся в 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 ответ

Через пробу и ошибку я заметил причину проблемы. На странице, где хранятся данные, я включил библиотеку 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() на второй странице, успешно получает данные, сохраненные с первой страницы.

Другие вопросы по тегам