Your code would look something like the following:
//crear objeto de la base de datos para las distintos navegadores
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
var dataBase = null; //variable global
//crea la base de datos IndexedDb
function startDB() {
//nombre de la base de datos y versión
dataBase = indexedDB.open('object', 1);
dataBase.onupgradeneeded = function (e) { //
//conector
var active = dataBase.result;
//creación del objeto//keyPath es la clave primaria
var storePeople = active.createObjectStore("people", {
keyPath: 'id',
autoIncrement: true
});
storePeople.createIndex('by_name', 'name', {unique: false});
storePeople.createIndex('by_dni', 'dni', {unique: true});
// Aqui comienza el otro almacen de datos.
var storeTest = active.createObjectStore("test", {
keyPath: 'id',
autoIncrement: true
});
storeTest.createIndex('by_name', 'name', {unique: false});
storeTest.createIndex('by_dni', 'dni', {unique: true});
}
};
<!-- función que añade nuevos registros -->
function addprueba() {
var active = dataBase.result;
var data = active.transaction(["test"], "readwrite");
var object2 = data.objectStore("test");
var request = object2.put({
dni: document.querySelector("#dni").value,
md: document.querySelector("#md").value,
slv: document.querySelector("#slv").value,
mes: document.querySelector("#mes").value,
anyo: document.querySelector("#anyo").value
});
request.onerror = function (e) {
alert(request.error.name + '\n\n' + request.error.message);
};
data.oncomplete = function (e) {
document.querySelector('#dni').value = '';
document.querySelector('#md').value = '';
document.querySelector('#slv').value = '';
document.querySelector('#mes').value = '';
document.querySelector('#anyo').value = '';
alert('Object successfully added');
};
}
<!-- Aquí recojo los datos para introducirlos en el almacén de objetos prueba -->
<input type="text" id="dni" placeholder="DNI" />
<input type="text" id="md" placeholder="MD" />
<input type="text" id="slv" placeholder="sLv" />
<input type="text" id="mes" placeholder="Mes" />
<input type="text" id="anyo" placeholder="Año" />
<button type="button" onclick="addprueba();">Guardar</button>
Staying as follows:
Structure with focus POO
I recommend you follow a structure for your code focused on POO (Object Oriented Programming), something like the following:
var App = {
requestDB: null,
db: null,
init: function () {
this.requestDB = indexedDB.open('object', 1);
this.requestDB.addEventListener(
'upgradeneeded',
this.onupgradeneeded.bind(this)
);
this.requestDB.addEventListener(
'success',
this.onsuccess.bind(this)
);
},
onupgradeneeded: function (e) {
this.db = this.requestDB.result;
/* Almacenamiento: People */
var storePeople = this.db.createObjectStore('People', {
keyPath: 'id',
autoIncrement: true
});
storePeople.createIndex('by_name', 'name', {unique: false});
storePeople.createIndex('by_dni', 'dni', {unique: true});
/* Almacenamiento: Test */
var storeTest = this.db.createObjectStore('Test', {
keyPath: 'id',
autoIncrement: true
});
storeTest.createIndex('by_name', 'name', {unique: false});
storeTest.createIndex('by_dni', 'dni', {unique: true});
},
onsuccess: function (e) {
this.db = this.db || this.requestDB.result;
/* Aquí tu código */
}
};
In the end you would only call App.init()
to initialize everything.