本地持久存储

时间:2016-09-04 22:44:19

标签: json cordova meteor reactjs

我有一个流星反应应用程序,我需要一种方法来保存本地的一些信息,这也将是持久的。例如,如果用户保存json,即使应用程序已关闭并稍后重新打开,我也希望使用相同的json。我尝试过groundDb,但它也需要服务器端。我需要此功能才能让每个用户保存游戏级别等信息。如果我可以在网络上使用它而不仅仅是本机版本,那将是很棒的。谢谢!

6 个答案:

答案 0 :(得分:1)

localForage

我们使用的一个选项是npmlocalforage,它为localStorage提供异步存储包装,并允许您保存任何类型的数据。您可以配置商店,并创建多个本地存储实例。

  

您可以在localForage中存储任何类型;你并不局限于像localStorage这样的字符串。

设置localforage类似于使用localStorage,除非您必须使用异步调用:

使用Promise (注意,如果您不使用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'
})

You can read more about localForage here.

答案 1 :(得分:1)

要加入学生,请在这里找到正确的解释:

您应首先使用全局JSON对象及其stringify方法将对象文字转换为JSON:

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);

答案 2 :(得分:0)

应该很容易。对Object进行字符串化以使其成为字符串然后保存它。请遵循:

 given:
    params.id = 3002
    currentUser = Mock(User)
    criteriaSetup()
    controller.getSalesOrder >> salesOrders[2]

    when:
    controller.loadOrderManageDetails()

    then:
    (1.._) controller.springSecurityService.getCurrentUser() >> currentUser


    expect:
    view == 'orderMange/orderManageDetail'
    model.orderInstance == salesOrders[2]

答案 3 :(得分:0)

保存到localStorage时序列化JSON:

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

从localStorage检索时反序列化:

var serializedData = localStorage.getItem('dataKey');
var data = JSON.parse(serializedData);

答案 4 :(得分:0)

是的,这很容易。获取所需的对象并对其进行字符串化,然后存储在本地存储中。 JSON对象是字符串对象,而不是每个字符串。因此,当您将其存储到本地存储时,它不能存储为对象,而是需要将其转换为json字符串。

添加:localStorage.setItem(); 检索:localStorage.getItem();

另一个好的做法是,在登录时检索数据,将其存储在数组中,然后存储回localstorage。所以你不会有任何垃圾数据,它总是最新的。

清除:localStorage.clear();注意:这将清除整个localstorage。 另请注意,localstorage有一个大小限制。大多数浏览器允许5-10 MB。

如果你有大量数据,你也可以indexedDB。它相当新,但更好地存储在浏览器中的大量数据。现在我认为只有IE有一个很好的实现。

答案 5 :(得分:0)

使用标准localStoragehttps://developer.mozilla.org/en/docs/Web/API/Window/localStorage

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

const object = JSON.parse(localStorage.getItem('xyz'));