add() 方法在 IDBObjectStore interface returns an IDBRequest object, and, in a separate thread, creates a structured clone of the value, and stores the cloned value in the object store. This is for adding new records to an object store.

To determine if the add operation has completed successfully, listen for the transaction’s complete event in addition to the IDBObjectStore.add request’s success event, because the transaction may still fail after the success event fires. In other words, the success event is only triggered when the transaction has been successfully queued.

The add method is an insert only method. If a record already exists in the object store with the key parameter as its key, then an error ConstrainError event is fired on the returned request object. For updating existing records, you should use the IDBObjectStore.put method instead.

注意: 此特征可用于 Web 工作者 .

句法

var request = objectStore.add(value);
var request = objectStore.add(value, key);
					

参数

The value to be stored.

key 可选

The key to use to identify the record. If unspecified, it results to null.

返回

An IDBRequest object on which subsequent events related to this operation are fired.

异常

此方法可能引发 DOMException of one of the following types:

异常 描述
ReadOnlyError The transaction associated with this operation is in read-only mode .
TransactionInactiveError This IDBObjectStore 's transaction is inactive.
DataError Any of the following conditions apply:

  • The object store uses in-line keys or has a key generator, and a key parameter was provided.
  • The object store uses out-of-line keys and has no key generator, and no key parameter was provided.
  • The object store uses in-line keys but no key generator, and the object store's key path does not yield a valid key.
  • The key parameter was provided but does not contain a valid key.
InvalidStateError IDBObjectStore has been deleted or removed.
DataCloneError The data being stored could not be cloned by the internal structured cloning algorithm.
ConstraintError An insert operation failed because the primary key constraint was violated (due to an already existing record with the same primary key value).

范例

In the following code snippet, we open a read/write transaction on our database and add some data to an object store using add() . Note also the functions attached to transaction event handlers to report on the outcome of the transaction opening in the event of success or failure. For a full working example, see our 待办通知 app ( 实时查看范例 )。

// Let us open our database
var DBOpenRequest = window.indexedDB.open("toDoList", 4);
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 below
  db = DBOpenRequest.result;
  // Run the addData() function to add the data to the database
  addData();
};
function addData() {
  // Create a new object ready to insert into the IDB
  var newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ];
  // open a read/write db transaction, ready for adding the data
  var transaction = db.transaction(["toDoList"], "readwrite");
  // report on the success of the transaction completing, when everything is done
  transaction.oncomplete = function(event) {
    note.innerHTML += '<li>Transaction completed.</li>';
  };
  transaction.onerror = function(event) {
  note.innerHTML += '<li>Transaction not opened due to error. Duplicate items not allowed.</li>';
  };
  // create an object store on the transaction
  var objectStore = transaction.objectStore("toDoList");
  // Make a request to add our newItem object to the object store
  var objectStoreRequest = objectStore.add(newItem[0]);
  objectStoreRequest.onsuccess = function(event) {
    // report the success of our request
    note.innerHTML += '<li>Request successful.</li>';
  };
};
				

规范

规范 状态 注释
索引数据库 API 2.0
The definition of 'add()' in that specification.
推荐
索引数据库 API 草案
The definition of 'add()' in that specification.
推荐

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
add Chrome 24
24
23 — 57 Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge 12 Firefox 16
16
10 — 16 Prefixed
Prefixed Implemented with the vendor prefix: moz
IE 部分支持 10 Opera 15 Safari 7 WebView Android Yes
Yes
? — 57 Prefixed
Prefixed Implemented with the vendor prefix: webkit
Chrome Android 25
25
25 — 57 Prefixed
Prefixed Implemented with the vendor prefix: webkit
Firefox Android 22 Opera Android 14 Safari iOS 8 Samsung Internet Android 1.5
1.5
1.5 — 7.0 Prefixed
Prefixed Implemented with the vendor prefix: webkit

图例

完整支持

完整支持

部分支持

部分支持

要求使用供应商前缀或不同名称。

要求使用供应商前缀或不同名称。

另请参阅

元数据

  • 最后修改: