aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/idbobjectstore/add/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/idbobjectstore/add/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/api/idbobjectstore/add/index.html')
-rw-r--r--files/zh-cn/web/api/idbobjectstore/add/index.html179
1 files changed, 179 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/idbobjectstore/add/index.html b/files/zh-cn/web/api/idbobjectstore/add/index.html
new file mode 100644
index 0000000000..b953262c13
--- /dev/null
+++ b/files/zh-cn/web/api/idbobjectstore/add/index.html
@@ -0,0 +1,179 @@
+---
+title: IDBObjectStore.add()
+slug: Web/API/IDBObjectStore/add
+translation_of: Web/API/IDBObjectStore/add
+---
+<p>{{ APIRef("IndexedDB") }}</p>
+
+<div>
+<p>{{domxref("IDBObjectStore")}} 接口中的 <strong><code>add()</code></strong> 方法返回一个 {{domxref("IDBRequest")}} 对象,在单独的线程中创建一个结构(<a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#structured-clone">structured clone</a>)化克隆值,并且在对象存储中存储这个克隆值。这个方法用作在一个对象存储中添加一条新的记录。</p>
+</div>
+
+<p> 要确定添加操作是否成功完成,可以监听事务的 <code>complete</code> 事件。除了 <code>IDBObjectStore.add </code>请求 <code>success</code> 事件之外,因为事务在成功被触发后仍然可能失败。换句话说,成功事件只有在事务成功排队后才会触发。</p>
+
+<p><strong><code>add()</code></strong> 方法是唯一的插入方法。如果以关键字参数作为主键的一条记录已经存在在存储对象中,这时在返回的请求对象中 <code>ConstrainError</code> 错误事件将被触发。对于更新存在的记录,你应该使用 {{domxref("IDBObjectStore.put")}} 方法替代它。</p>
+
+<p>{{AvailableInWorkers}}</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox notranslate">var <em>request</em> = objectStore.add(<em>value</em>);
+var <em>request</em> = objectStore.add(<em>value</em>, <em>key</em>);
+</pre>
+
+<h3 id="参数">参数</h3>
+
+<dl>
+ <dt>value</dt>
+ <dd>需要存储的值。</dd>
+ <dt>key {{optional_inline}}</dt>
+ <dd>关键字用于识别记录。如果未指明,即为空。</dd>
+</dl>
+
+<h3 id="返回">返回</h3>
+
+<p><span style="line-height: 1.5;">一个 {{domxref("IDBRequest")}} 对象,在该操作对象中触发与此相关的后续事件。</span></p>
+
+<h3 id="异常">异常</h3>
+
+<p><span style="line-height: 1.5;">这个方法可能导致以下类型中的一个</span> <span style="line-height: 1.5;">{{domxref("DOMException")}}</span> <span style="line-height: 1.5;">:</span></p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Exception</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>ReadOnlyError</code></td>
+ <td>与此操作相关联的事务处于只读模式。</td>
+ </tr>
+ <tr>
+ <td><code>TransactionInactiveError</code></td>
+ <td>当前 {{domxref("IDBObjectStore")}} 事务不可用。</td>
+ </tr>
+ <tr>
+ <td><code><span style="line-height: normal;">DataError</span></code></td>
+ <td>
+ <p>适用于以下任何条件:</p>
+
+ <ul>
+ <li>对象存储使用内联键或者拥有密钥生成器(键生成器),并且提供了键参数。</li>
+ <li>对象存储使用外联键或者没有密钥生成器(键生成器),并且没有提供键参数。</li>
+ <li>对象存储使用内联键但是没有密钥生成器(键生成器),并且对象存储的键路径不会产生一个有效的键值。</li>
+ <li>键参数已经被提供,但是不包含一个有效的键。</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td><code>InvalidStateError</code></td>
+ <td>
+ <p>{{domxref("IDBObjectStore")}} 已经被删除或者移除。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>DataCloneError</code></td>
+ <td>通过内部结构的克隆算法,被存储的数据无法被克隆<br>
+  </td>
+ </tr>
+ <tr>
+ <td><code class="idl">ConstraintError</code></td>
+ <td>
+ <p>因为主键违法规定导致的插入操作失败(由于已存在的记录使用了相同的主键值)。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="示例">示例</h2>
+
+<p><span style="line-height: 1.5;">在以下的代码片段中,在我们数据库中打开一个 </span>read/write(读写)事务和使用 <code>add()</code> 方法添加一些数据到存储对象中。<span style="">还要注意附加到事务事件处理程序的函数,这些函数用于报告事务打开成功或失败时的结果。完整的示例代码,请查看我们的</span><a href="https://github.com/mdn/to-do-notifications/" style="line-height: 1.5;"> To-do Notifications</a><span style="line-height: 1.5;"> 应用</span><span style="">(</span> <a href="http://mdn.github.io/to-do-notifications/" style="line-height: 1.5;">在线查看示例</a> <span style="">)。</span></p>
+
+<pre class="brush: js notranslate">// Let us open our database
+<span style="line-height: 1.5;">var DBOpenRequest = window.indexedDB.open("toDoList", 4);
+
+</span><span style="line-height: 1.5;">DBOpenRequest.onsuccess = function(event) {</span>
+ note.innerHTML += '&lt;li&gt;Database initialised.&lt;/li&gt;';
+
+ // 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 += '&lt;li&gt;Transaction completed.&lt;/li&gt;';
+ };
+
+ transaction.onerror = function(event) {
+ note.innerHTML += '&lt;li&gt;Transaction not opened due to error. Duplicate items not allowed.&lt;/li&gt;';
+ };
+
+ // 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 += '&lt;li&gt;Request successful.&lt;/li&gt;';
+  };
+};</pre>
+
+<h2 id="Specification"><span style="font-size: 2.14285714285714rem;">Specification</span></h2>
+
+<dl>
+</dl>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('IndexedDB', '#dom-idbobjectstore-add', 'add()')}}</td>
+ <td>{{Spec2('IndexedDB')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName("IndexedDB 2", "#dom-idbobjectstore-add", "add()")}}</td>
+ <td>{{Spec2("IndexedDB 2")}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">Browser compatibility</h2>
+
+<div>
+
+
+<p>{{Compat("api.IDBObjectStore.add")}}</p>
+</div>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">Using IndexedDB</a></li>
+ <li>Starting transactions: {{domxref("IDBDatabase")}}</li>
+ <li>Using transactions: {{domxref("IDBTransaction")}}</li>
+ <li>Setting a range of keys: {{domxref("IDBKeyRange")}}</li>
+ <li>Retrieving and making changes to your data: {{domxref("IDBObjectStore")}}</li>
+ <li>Using cursors: {{domxref("IDBCursor")}}</li>
+ <li>Reference example: <a class="external" href="https://github.com/mdn/to-do-notifications/tree/gh-pages">To-do Notifications</a> (<a class="external" href="http://mdn.github.io/to-do-notifications/">view example live</a>.)</li>
+</ul>