我是移动开发的新手,并计划使用带有Onsen UI的纯HTML和jQuery构建应用程序。
我了解到我们可以将localForage
用作数据库,并且有一些疑问。
必须为我的应用使用数据库名称。如果否,则移动中的其他应用程序也可能正在使用localForage
。那么所有应用程序的数据库都一样吗。
此处的document说,应在每个操作之前调用config。 因此,是否可以像这样在页面加载时初始化它?
$(document).ready(function(){
localforage.config({
名称:“ myApp”,
版本:1.0,
storeName:“键值对”
});
});
或者应该在每个动作(获取,设置,清除等)之前声明它
我们如何知道该操作正在触发所需的数据库,因为该操作未在操作方法中指定。
必须具有商店名称。
答案 0 :(得分:1)
- 必须为我的应用使用数据库名称。如果否,则移动中的其他应用程序也可能正在使用localForage。那么所有应用程序的数据库都一样吗?
A:是和否。实际上,必须具有数据库名称。但是,如果不设置它,则使用默认值“ localforage”。
- 这里的文档说,应在每个操作之前调用config。因此,是否可以像这样在页面加载时对其进行初始化...
A:是的,在$(document).ready(cb)
中初始化是完全可以的。实际上,只要您确保它在有史以来第一次调用任何实际操作(setItem / getItem等)之前发生,就可以随时“初始化”是可以的。
- 我们如何知道该操作正在触发所需的数据库,因为在操作方法中未指定该数据库。
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”数据库上触发了该操作;-)
- 必须具有商店名称。
再次,是和否。但是,等等,听到我的声音,这有点棘手。
默认数据库实际上被命名为“ 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设置配置**