aboutsummaryrefslogtreecommitdiff
path: root/files/es/web/api/idbobjectstore/add/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/web/api/idbobjectstore/add/index.html')
-rw-r--r--files/es/web/api/idbobjectstore/add/index.html193
1 files changed, 193 insertions, 0 deletions
diff --git a/files/es/web/api/idbobjectstore/add/index.html b/files/es/web/api/idbobjectstore/add/index.html
new file mode 100644
index 0000000000..1a28ff194c
--- /dev/null
+++ b/files/es/web/api/idbobjectstore/add/index.html
@@ -0,0 +1,193 @@
+---
+title: IDBObjectStore.add
+slug: Web/API/IDBObjectStore/add
+tags:
+ - API
+ - Add
+ - Almacenamiento
+ - Base de datos
+ - IDBObjectStore
+ - IndexedDB
+ - Referencia
+translation_of: Web/API/IDBObjectStore/add
+---
+<p>{{ APIRef("IDBObjectStore") }}</p>
+<div>
+ <p>El metodo <code>add()</code> de la interfaz {{domxref("IDBObjectStore")}} retorna un objeto {{domxref("IDBRequest")}}, y, un hilo separado, crea un <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#structured-clone">clone estructurado</a> del valor, y almacena el valor clonado en el almacén de objetos. Esto es para agregar nevos registros a un almacén de objetos.</p>
+ <p>Para determinar si la operación de agregar fue completada satisfactoriamente, escucha el evento <code>complete</code> de la transaccion en adicion al evento <code>success</code> de la peticion <code>IDBojectStore.add</code>, porque la transaccion y todavía puede fallar después de lanzar el evento success. En otras palabras, el eventos success sólo es lanzado cuando la transacción ha sido puesta en cola satisfactoriamente.</p>
+ <p>El método agregar es un método de <em>sólo inserción</em>. Si un registro ya existe en el almacén de objetos con el argumento <code>key</code> como su clave, entonces un error <code>ConstrainError</code> es lanzado en el objeto petición devuelto. Para actualizar registros existentes, debes usar el método {{domxref("IDBObjectStore.put")}} en su lugar.</p>
+</div>
+<h2 id="Sintaxis">Sintaxis</h2>
+<pre class="brush: js">var request = objectStore.add(myItem, optionalKey);</pre>
+<h3 id="Retorno">Retorno</h3>
+<p>Un objeto <span style="line-height: 1.5;">{{domxref("IDBRequest")}} en el que los eventos subsecuentes relacionados a esta operación son lanzados.</span></p>
+<h3 id="Excepciones">Excepciones</h3>
+<p>Este método puede generar un <span style="line-height: 1.5;">{{domxref("DOMException")}}</span> con un <span style="line-height: 1.5;">{{domxref("DOMError")}}</span> de uno de los siguiente tipos:</p>
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Excepción</th>
+ <th scope="col">Descripción</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>ReadOnlyError</code></td>
+ <td>La transacción asociada con esta operación está en un <a href="/en-US/docs/IndexedDB/IDBTransaction#mode_constants" title="/en-US/docs/IndexedDB/IDBTransaction#mode_constants">modo</a> de sólo lectura.</td>
+ </tr>
+ <tr>
+ <td><code>TransactionInactiveError</code></td>
+ <td>Esta transacción de {{domxref("IDBObjectStore")}}'s está inactiva.</td>
+ </tr>
+ <tr>
+ <td><code><span style="line-height: normal;">DataError</span></code></td>
+ <td>
+ <p>Cualquiera de los siguientes condiciones aplica:</p>
+ <ul>
+ <li>El almacén de objetos usa llaves en línea o tiene un generador de llaves, y una argumento llave fue proporcionado.</li>
+ <li>El almacén de objetos usa llaves fuera de línea y no tiene un generador de llaves, y un argumento llave fue proporcionado.</li>
+ <li>El almacén de objetos usa llaves en línea pero no un generador de llaves, y la ruta de la llave del almacén de objetos no da una llave válida.</li>
+ <li>El argumento llave fue proporcionado pero no contiene una llave válida.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td><code>InvalidStateError</code></td>
+ <td>El {{domxref("IDBObjectStore")}} ha sido borrado o removido.</td>
+ </tr>
+ <tr>
+ <td><code>DataCloneError</code></td>
+ <td>Los datos siendo almacenados no pueden ser clonados por el algoritmo de clonado estructurado interno.</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Ejemplo">Ejemplo</h2>
+<p>En el siguiente código, abrimos una transacción read/write en nuestra base de datos y agregado algunos datos al almacén de datos usando <code>add()</code>. También ten en cuenta que las funciones adjuntas a los manejadores de eventos de la transacción para informar en la salida de la apertura de transacciones en el evento de éxito o falla. Para un ejemplo completo funcionando, mira nuestra aplicación <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><a href="http://mdn.github.io/to-do-notifications/" style="line-height: 1.5;">ver ejemplo</a><span style="line-height: 1.5;">)</span>.</p>
+<pre class="brush: js" style="font-size: 14px;">// Abrimos nuestra base de datos
+<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;';
+
+ // Almacenar el resultado de la apertura de la base de datos en la variable db. Esta es usada mucho después
+ db = DBOpenRequest.result;
+
+ // Ejecuta la función addData() para agregar los datos
+ addData();
+};
+
+function addData() {
+ // Crea un nuevo objeto listo para ser insertado en la IDB
+ var newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ];
+
+ // Inicia una transacción de lectura/escritura db transaction, lista para agregar los datos
+ var transaction = db.transaction(["toDoList"], "readwrite");
+
+ // Informa sobre el éxito de la inicio de la transacción
+ transaction.oncomplete = function(event) {
+ note.innerHTML += '&lt;li&gt;Transaction completed: database modification finished.&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;';
+ };
+
+ // Crea una almacén de objetos en la transacción
+ var objectStore = transaction.objectStore("toDoList");
+
+ // Agrega nuestro objeto newItem al almacén de objetos
+ var objectStoreRequest = objectStore.add(newItem[0]);
+
+ objectStoreRequest.onsuccess = function(event) {
+ //Informa sobre el éxito de nuestro nuevo elemento en la base de datos
+ note.innerHTML += '&lt;li&gt;New item added to database.&lt;/li&gt;';
+ };
+};</pre>
+<h2 id="Parámetros">Parámetros</h2>
+<dl>
+ <dt>
+ value</dt>
+ <dd>
+ El valor para ser almacenado.</dd>
+ <dt>
+ key</dt>
+ <dd>
+ La llave a usar para identificar el registro. Si no es especificada, el resultado es nulo.</dd>
+</dl>
+<h2 id="Especificación"><span style="font-size: 2.14285714285714rem;">Especificación</span></h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Especificación</th>
+ <th scope="col">Estado</th>
+ <th scope="col">Comentario</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('IndexedDB', '#widl-IDBObjectStore-add-IDBRequest-any-value-any-key', 'add()')}}</td>
+ <td>{{Spec2('IndexedDB')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad de navegadores</h2>
+<div>
+ {{CompatibilityTable}}</div>
+<div id="compat-desktop">
+ <table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari (WebKit)</th>
+ </tr>
+ <tr>
+ <td>Soporte básico</td>
+ <td>23{{property_prefix("webkit")}}<br>
+ 24</td>
+ <td>10 {{property_prefix("moz")}}<br>
+ {{CompatGeckoDesktop("16.0")}}</td>
+ <td>10, partial</td>
+ <td>15</td>
+ <td>7.1</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+<div id="compat-mobile">
+ <table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Característica</th>
+ <th>Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>Firefox OS</th>
+ <th>IE Phone</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Soporte básico</td>
+ <td>4.4</td>
+ <td>{{CompatGeckoMobile("22.0")}}</td>
+ <td>1.0.1</td>
+ <td>10</td>
+ <td>22</td>
+ <td>{{CompatNo}}</td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+<h2 id="Ver_también">Ver también</h2>
+<ul>
+ <li><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">Usando IndexedDB</a></li>
+ <li>Iniciando transacciones: {{domxref("IDBDatabase")}}</li>
+ <li>Usando transacciones: {{domxref("IDBTransaction")}}</li>
+ <li>Estableciendo un rango de llaves: {{domxref("IDBKeyRange")}}</li>
+ <li>Obteniendo y haciendo cambios a tus datos: {{domxref("IDBObjectStore")}}</li>
+ <li>Usando cursores: {{domxref("IDBCursor")}}</li>
+ <li>Ejemplo de referencia: <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/">ver ejemplo</a>.)</li>
+</ul>