У меня есть приложение для реакции на метеор, и мне нужен способ сохранить некоторую информацию локально, которая также будет постоянной. Например, если пользователь сохраняет json, я хочу использовать тот же json, даже если приложение закрывается и открывается позже. Я пробовал GroundDb, но он также требует серверной части. Мне нужна эта функция, чтобы каждый пользователь мог сохранять такую ​​информацию, как уровень игры. Было бы здорово, если бы я мог использовать его в Интернете, а не только для нативных версий. Благодарность!

0
user2646559 5 Сен 2016 в 01:44

6 ответов

Лучший ответ

Чтобы присоединиться к педантам, вот правильное объяснение:

Сначала вы должны преобразовать литерал вашего объекта в JSON, используя глобальный объект JSON и его метод stringify:

let data = {a: 'some', b: 'data', c: null};
let json = JSON.stringify(data);
localStorage.setItem('data', json);

Если вы хотите получить данные и использовать их в своем приложении, вам необходимо проанализировать JSON обратно в литерал объекта:

let json = localStorage.getItem('data');
let data = JSON.parse(json);
1
mindfullsilence 6 Сен 2016 в 05:16

Вы сериализуете JSON при сохранении в localStorage:

var serializedData = JSON.stringify(data);
localStorage.setItem('dataKey', serializedData);

И десериализуйте его при извлечении из localStorage:

var serializedData = localStorage.getItem('dataKey');
var data = JSON.parse(serializedData);
0
qais 7 Сен 2016 в 21:21

Ага, это довольно просто. возьмите желаемый объект, сделайте его строковым и сохраните в локальном хранилище. Объекты JSON - это строковые объекты, а не строка, как говорится. поэтому, когда вы сохраняете его в локальном хранилище, его нельзя сохранить как объект, но необходимо преобразовать его в строку json.

Добавить: localStorage.setItem (); для получения: localStorage.getItem ();

Другой хорошей практикой может быть получение данных при входе в систему, сохранение их в массиве и последующее сохранение в localstorage. поэтому у вас не будет никаких нежелательных данных, и они всегда будут в актуальном состоянии.

Очистить: localStorage.clear (); Примечание: это очистит все локальное хранилище. также обратите внимание, что существует ограничение на размер локального хранилища. большинство браузеров позволяют 5-10 мб.

Если у вас большие объемы данных, вы также можете indexedDB. он довольно новый, но лучше для хранения больших объемов данных в браузере. на данный момент я думаю, что только IE имеет хорошую реализацию.

0
Vaishak P Dinesh 4 Сен 2016 в 23:43

Это должно быть легко. Преобразуйте объект в строку, затем сохраните его. Следить за этим:

var dataToStore = JSON.stringify(data);
localStorage.setItem('someData', dataToStore);
0
Jan Franz Palngipang 5 Сен 2016 в 01:18

Используйте стандартный localStorage: https://developer.mozilla.org / en / docs / Web / API / Window / localStorage

localStorage.setItem('xyz', JSON.stringify(object));

const object = JSON.parse(localStorage.getItem('xyz'));
0
Alessio Dionisi 5 Сен 2016 в 00:02

LocalForage

Один из вариантов, который мы используем, - это пакет npm localforage, который предоставляет обертка асинхронного хранилища для localStorage и позволяет сохранять данные любого типа. Вы можете настроить свой магазин и создать несколько экземпляров локального хранилища.

Вы можете хранить любой тип в localForage; вы не ограничены строками, как в localStorage.

Настройка localforage аналогична использованию localStorage за исключением того, что вы должны использовать асинхронные вызовы:

Использование обещаний (обратите внимание, что вы можете использовать обратные вызовы, если не используете ES6 API)

Храните свои данные

localforage
  .setItem(
    'state', data
  )
  .catch(console.error.bind(console))

Получите свои данные

localforage.getItem('state')
  .then(data => /* ... */ )
  .catch(console.error.bind(console))

Назовите свой магазин

localforage.config({
  name: 'myStore'
})

Вы можете узнать больше о localForage здесь.

1
alexi2 6 Сен 2016 в 04:59