这篇翻译不完整。请帮忙从英语翻译这篇文章

IndexedDB 中的 IDBDatabase 接口提供一个到 数据库的连接; 你可以使用 IDBDatabase 对象在数据库中打开一个transaction , 然后进行操作或者删除数据库中的对象。这是唯一一个能够访问和管理数据库版本的接口。 

 

Note: 此特性在 Web Worker 中可用。

注意:在IndexedDB中所做的所有事情总是发生在事务的上下文中,表示与数据库中的数据的交互。IndexedDB中的所有对象——包括对象存储、索引和游标——都与特定事务绑定。因此,在事务之外您不能执行命令、访问数据或打开任何东西。

注意:请注意,从Firefox 40开始,IndexedDB事务具有宽松的持久性保证以提高性能(请参阅bug 1112702)以前在readwrite事务中IDBTransaction.oncomplete被触发只有当所有数据都保证已刷新到磁盘时。在Firefox 40+中,complete事件在操作系统被告知写入数据之后被触发,但可能在该数据实际上被刷新到磁盘之前。该complete因此,事件可以比以前更快地传递,但是,如果操作系统崩溃或者在将数据刷新到磁盘之前系统电源丢失,则整个事务将丢失的可能性很小。由于这种灾难性事件很少见,大多数消费者不应该进一步关注自己。如果由于某种原因必须确保持久性(例如,您要存储以后无法重新计算的关键数据),则可以complete通过使用实验(非标准)readwriteflush模式创建事务来强制事务在传递事件之前刷新到磁盘(请参阅IDBDatabase.transaction)。

方法

继承自: EventTarget

IDBDatabase.close()
在一个单独的线程中关闭数据库连接并立即返回。
IDBDatabase.createObjectStore()
创建并返回一个新的 object store 或者 index。
IDBDatabase.deleteObjectStore()
根据给定的名字,删除在当前连接的数据库中的 object store 和 相关的索引。 
IDBDatabase.transaction()
立即返回一个包含IDBTransaction.objectStore 方法的 transaction 对象。你可以用这个对象来操作object store。这个操作是在一个单独的线程中执行的。

属性

IDBDatabase.name 只读
DOMString类型,当前连接数据库名  。
IDBDatabase.version 只读
64-bit 整型数,当前连接数据库的版本 。当数据第一次被创建时,这个属性是一个空的字符串。 
IDBDatabase.objectStoreNames 只读
DOMStringList类型,当前连接连接数据库中所有的object store 名字列表。

Event handlers

IDBDatabase.onabort
在中断数据库访问时触发。
IDBDatabase.onerror
当访问数据库失败时触发。
IDBDatabase.onversionchange

当数据库结构发生更改时触发

(IDBOpenDBRequest.onupgradeneeded事件或在其他地方请求 IDBFactory.deleteDatabase 时(最可能在同一台计算机上的另一个窗口/选项卡中这与版本更改事务(请参阅参考资料IDBVersionChangeEvent)不同,但它是相关的。

示例

在下面的代码中, 异步打开了一个数据库连接 (IDBFactory), 并处理成功或者异常事件, 如果触发了upgrade事件就需要创建一个新的object store  (IDBdatabase)。如果想看完整的例子, 可以使用 To-do Notifications 应用(view example live.)


// Let us open our database
  var DBOpenRequest = window.indexedDB.open("toDoList", 4);

  // these two event handlers act on the IDBDatabase object, when the database is opened successfully, or not
  DBOpenRequest.onerror = function(event) {
    note.innerHTML += '<li>Error loading database.</li>';
  };
 
  DBOpenRequest.onsuccess = function(event) {
    note.innerHTML += '<li>Database initialised.</li>';
    
    // store the result of opening the database in the db variable. This is used a lot later on
    db = DBOpenRequest.result;
    
    // Run the displayData() function to populate the task list with all the to-do list data already in the IDB
    displayData();
  };
 
  // This event handles the event whereby a new version of the database needs to be created
  // Either one has not been created before, or a new version number has been submitted via the
  // window.indexedDB.open line above
 
  DBOpenRequest.onupgradeneeded = function(event) {
    var db = event.target.result;
    
    db.onerror = function(event) {
      note.innerHTML += '<li>Error loading database.</li>';
    };

    // Create an objectStore for this database using IDBDatabase.createObjectStore
    
    var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });
    
    // define what data items the objectStore will contain
    
    objectStore.createIndex("hours", "hours", { unique: false });
    objectStore.createIndex("minutes", "minutes", { unique: false });
    objectStore.createIndex("day", "day", { unique: false });
    objectStore.createIndex("month", "month", { unique: false });
    objectStore.createIndex("year", "year", { unique: false });

    objectStore.createIndex("notified", "notified", { unique: false });
    
    note.innerHTML += '<li>Object store created.</li>';
  };

下一行打开数据库上的事务,然后打开一个对象存储,然后我们可以在其中操作数据。


    var objectStore = db.transaction('toDoList').objectStore('toDoList'); 

规范

Specification Status Comment
Indexed Database API
IDBDatabase
Recommendation  

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23webkit
24
10 moz
16.0 (16.0)
10, partial 15 7.1
Available in workers (Yes) 37.0 (37.0) ? (Yes) ?
Feature Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 4.4 22.0 (22.0) 1.0.1 10 22 8
Available in workers (Yes) 37.0 (37.0) (Yes) ? (Yes) ?

Be careful in Chrome as it still implements the old specification along with the new one. Similarly it still has the prefixed webkitIndexedDB property even if the unprefixed indexedDB is present.

See also

 

文档标签和贡献者

标签: 
此页面的贡献者: washstar, luckyqiao, Monokai
最后编辑者: washstar,