IDBCursor

La interfaz IDBCursor de la IndexedDB API representa un cursor para atravesar o iterar varios registros de una base de datos.

El cursor tiene una fuente que indica el 铆ndice o el almac茅n de objetos sobre el que se est谩 iterando. Tiene una posici贸n dentro del rango y se mueve en una direcci贸n que aumenta o disminuye en el orden de las Keys de registro. El cursor permite a una aplicaci贸n procesar asincr贸nicamente todos los registros del rango del cursor.

Puede tener un n煤mero ilimitado de cursores al mismo tiempo. Siempre se obtiene el mismo objeto IDBCursor que representa un cursor determinado. Las operaciones se realizan en el 铆ndice subyacente o en el almac茅n de objetos.

Nota: Esta caracter铆stica est谩 disponible en Web Workers.

Methods

IDBCursor.advance() (en-US)
Establece el n煤mero de veces que un cursor debe mover su posici贸n hacia adelante.
IDBCursor.continue()
Avanza el cursor a la siguiente posici贸n a lo largo de su direcci贸n, hasta el elemento cuya key coincide con el par谩metro clave opcional.
IDBCursor.delete() (en-US)
Devuelve un objeto IDBRequest (en-US) y, en un hilo separado, elimina el registro en la posici贸n del cursor, sin cambiar la posici贸n del cursor. Esto se puede utilizar para borrar registros espec铆ficos.
IDBCursor.update() (en-US)
Devuelve un objeto IDBRequest (en-US) y, en un hilo separado, actualiza el valor en la posici贸n actual del cursor en el almac茅n de objetos. Esto se puede utilizar para actualizar registros espec铆ficos.

Propiedades

IDBCursor.source (en-US) Read only
Devuelve IDBObjectStore o IDBIndex (en-US)} que el cursor est谩 iterando. Esta funci贸n nunca devuelve nulo o lanza una excepci贸n, incluso si el cursor est谩 siendo iterado, ha iterado m谩s all谩 de su final, o su transacci贸n no est谩 activa.
IDBCursor.direction (en-US) Read only
Devuelve la direcci贸n de desplazamiento del cursor. Ver Constants para valores posibles.
IDBCursor.key (en-US) Read only
Devuelve la key del registro en la posici贸n del cursor. Si el cursor est谩 fuera de su rango, se fija en undefined. La key del cursor puede ser de cualquier tipo de datos.
IDBCursor.primaryKey (en-US) Read only
Devuelve la key primaria efectiva actual del cursor. Si el cursor est谩 siendo iterado o ha iterado fuera de su rango, se fija en undefined. La key principal del cursor puede ser cualquier tipo de datos.

Constants

Desaprobado Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)

This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

These constants are no longer available 鈥 they were removed in Gecko 25. You should use the string constants directly instead. (error 891944)

  • NEXT : "next" : The cursor shows all records, including duplicates. It starts at the lower bound of the key range and moves upwards (monotonically increasing in the order of keys).
  • NEXTUNIQUE : "nextunique" : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the lower bound of the key range and moves upwards.
  • PREV : "prev" : The cursor shows all records, including duplicates. It starts at the upper bound of the key range and moves downwards (monotonically decreasing in the order of keys).
  • PREVUNIQUE : "prevunique" : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the upper bound of the key range and moves downwards.

Ejemplo

En este simple fragmento creamos una transacci贸n, recuperamos un almac茅n de objetos y usamos un cursor para iterar todos los registros del almac茅n de objetos. El cursor no nos obliga a seleccionar los datos en base a una key; podemos simplemente cogerlos todos. Tambi茅n tenga en cuenta que en cada iteraci贸n del bucle, puede tomar datos del registro actual bajo el objeto del cursor utilizando cursor.value.foo. Para un ejemplo completo de funcionamiento, vea nuestro IDBCursor example (view example live.)

function displayData() {
  var transaction = db.transaction(['rushAlbumList'], "readonly");
  var objectStore = transaction.objectStore('rushAlbumList');

  objectStore.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    if(cursor) {
      var listItem = document.createElement('li');
      listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log('Entries all displayed.');
    }
  };
}

Specifications

Specification Status Comment
Indexed Database API 2.0
La definici贸n de 'cursor' en esta especificaci贸n.
Recommendation

Browser compatibility

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! (en-US)
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23webkit (en-US)
24 [1]
10 moz (en-US)
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) ?

[1]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