如何为移动应用初始化localForage

时间:2019-03-22 06:37:26

标签: localforage

我是移动开发的新手,并计划使用带有Onsen UI的纯HTML和jQuery构建应用程序。

我了解到我们可以将localForage用作数据库,并且有一些疑问。

  1. 必须为我的应用使用数据库名称。如果否,则移动中的其他应用程序也可能正在使用localForage。那么所有应用程序的数据库都一样吗。

  2. 此处的document说,应在每个操作之前调用config。 因此,是否可以像这样在页面加载时初始化它?

    $(document).ready(function(){
          localforage.config({
           名称:“ myApp”,
           版本:1.0,
           storeName:“键值对”
      });
    });

或者应该在每个动作(获取,设置,清除等)之前声明它

  1. 我们如何知道该操作正在触发所需的数据库,因为该操作未在操作方法中指定。

  2. 必须具有商店名称。

2 个答案:

答案 0 :(得分:1)

  
      
  1. 必须为我的应用使用数据库名称。如果否,则移动中的其他应用程序也可能正在使用localForage。那么所有应用程序的数据库都一样吗?
  2.   

A:是和否。实际上,必须具有数据库名称。但是,如果不设置它,则使用默认值“ localforage”。

  
      
  1. 这里的文档说,应在每个操作之前调用config。因此,是否可以像这样在页面加载时对其进行初始化...
  2.   

A:是的,在$(document).ready(cb)中初始化是完全可以的。实际上,只要您确保它在有史以来第一次调用任何实际操作(setItem / getItem等)之前发生,就可以随时“初始化”是可以的。

  
      
  1. 我们如何知道该操作正在触发所需的数据库,因为在操作方法中未指定该数据库。
  2.   

A:localforage可以有多个实例,而每个实例仅绑定到一个数据库(更确切地说,它绑定到该特定数据库的特定存储)。您知道该操作针对特定的数据库,因为这些操作是特定实例的方法。这里没有歧义。

我个人建议您明确命名实例:

var myAppDb = localforage.createInstance({
  // these are the same options accepted by localforage.config()
  name: 'myApp',
  version : 1.0,
  storeName : 'keyvaluepairs'
});

myAppDb.setItem('foo', 'bar');

这样,您可以100%确保在“ myApp”数据库​​上触发了该操作;-)

  
      
  1. 必须具有商店名称。
  2.   

再次,是和否。但是,等等,听到我的声音,这有点棘手。

默认数据库实际上被命名为“ localforage”,而localforage中的存储具有未命名默认存储的这种内部概念。我个人觉得这很令人困惑。当您使用LOCALSTORAGE作为驱动程序时,它的行为很奇怪。

因此,经验法则始终是为商店命名。只需将其视为强制性即可。如果您在一个数据库中只有一家商店,则可以将其命名为“默认”。听起来比“键值对”好吗?

答案 1 :(得分:0)

 let instance = localforage.createInstance({         
      driver      : localforage.INDEXEDDB, // Force WebSQL; same as using setDriver()
      name        : name,
      version     : 1.0,
      size        : 4980736, // Size of database, in bytes. WebSQL-only for now.
      storeName   : 'YourStoreName', // Should be alphanumeric, with underscores.
      description : 'Your Description'
    });

instance.setItem("key", {"name":"abc"});

**您也可以从createInstance设置配置**