2016-10-31 4 views
1

Я следую за Progressive Web App lab from Google, и он говорит, что он использует localStorage для простоты, но мы должны изменить его на idb.Использование idb вместо localStorage

В принципе, мы хотим сохранить список городов для отображения их информации о погоде.

Я пробовал использовать простой idb, следуя информации here, но я думаю, что я слишком новичок в этом, и я не мог получить ничего из этого. Я должен сделать:

const dbPromise = idb.open('keyval-store', 1, upgradeDB => { 
    upgradeDB.createObjectStore('keyval'); 
}); 

и будет keyval быть имя моей переменной, где я хотел бы использовать keyval.get() или keyval.set(), чтобы получить и ценности магазина?

я решил перейти к более простому idbKeyval, я делаю:

app.saveSelectedCities = function() { 
    var selectedCities = JSON.stringify(app.selectedCities); 
    idbKeyval.set(selectedCities); 
}; 

вместо примера LocalStorage:

app.saveSelectedCities = function() { 
    var selectedCities = JSON.stringify(app.selectedCities); 
    localStorage.selectedCities = selectedCities; 
}; 

и

app.selectedCities = idbKeyval.keys().then(keys => console.log(keys)).catch(err => console.log('It failed!', err)); 

вместо localStorage пример:

app.selectedCities = localStorage.selectedCities; 

Но мое приложение не загружается никаких данных, и в консоли инструментов для разработчиков, я получаю:

app.js:314 Uncaught ReferenceError: idbKeyval is not defined(…) 

Я уверен, что я что-то тривиальное хватает, но это мои первые шаги с Javascript и нравится, поэтому, пожалуйста, любая помощь с любым из затронутых здесь пунктов будет принята с благодарностью!

+1

Вы включаете библиотеку idb-keyval? – Marco

+0

@Marco Yup. Я знал, что это должно быть чем-то простым и немым. Не стесняйтесь добавлять это в качестве ответа, и я выберу его как правильный. – coconut

+0

Выполнено, спасибо :) – Marco

ответ

2

Учитывая, что вы видите ошибку, похоже, что вы забыли включить библиотеку idb-keyval.

Смежные вопросы