Ho trovato che il codice seguente funziona correttamente ma per vedere il DB rimosso nella scheda Risorse di Chrome ho dovuto aggiornare la pagina. Inoltre, ho riscontrato problemi di esecuzione degli strumenti di debug di Chrome durante l'esecuzione delle transazioni. Rende più difficile il debug ma se lo si chiude durante l'esecuzione del codice, il codice sembra funzionare correttamente. Significativo è anche impostare un riferimento all'archivio oggetti quando si apre la pagina. Ovviamente la parte di cancellazione del codice è nel metodo deleteTheDB.
Codice derivato dall'esempio fornito da Craig Shoemaker su Pluralsight.
var IndDb = {
name: 'SiteVisitInsp',
version: 1000,
instance: {},
storenames: {
inspRecords: 'inspRecords',
images: 'images'
},
defaultErrorHandler: function (e) {
WriteOutText("Error found : " + e);
},
setDefaultErrorHandler: function (request) {
if ('onerror' in request) {
request.onerror = db.defaultErrorHandler;
}
if ('onblocked' in request) {
request.onblocked = db.defaultErrorHandler;
}
}
};
var dt = new Date();
var oneInspRecord =
{
recordId: 0,
dateCreated: dt,
dateOfInsp: dt,
weatherId: 0,
timeArrived: '',
timeDeparted: '',
projectId: 0,
contractorName: '',
DIWConsultant: '',
SiteForeman: '',
NoOfStaffOnSite: 0,
FileME: '',
ObservationNotes: '',
DiscussionNotes: '',
MachineryEquipment: '',
Materials: ''
};
var oneImage =
{
recordId: '',
imgSequence: 0,
imageStr: '',
dateCreated: dt
}
var SVInsp = {
nameOfDBStore: function() { alert("Indexed DB Store name : " + IndDb.name); },
createDB: function() {
openRequest = window.indexedDB.open(IndDb.name, IndDb.version);
openRequest.onupgradeneeded = function (e) {
var newVersion = e.target.result;
if (!newVersion.objectStoreNames.contains(IndDb.storenames.inspRecords)) {
newVersion.createObjectStore(IndDb.storenames.inspRecords,
{
autoIncrement: true
});
}
if (!newVersion.objectStoreNames.contains(IndDb.storenames.images)) {
newVersion.createObjectStore(IndDb.storenames.images,
{
autoIncrement: true
});
}
};
openRequest.onerror = openRequest.onblocked = 'Error'; //resultText;
openRequest.onsuccess = function (e) {
//WriteOutText("Database open");
IndDb.instance = e.target.result;
};
},
deleteTheDB: function() {
if (typeof IndDb.instance !== 'undefined') {
//WriteOutText("Closing the DB");
IndDb.instance.close();
var deleteRequest = indexedDB.deleteDatabase(IndDb.name)
deleteRequest.onblocked = function() {
console.log("Delete blocked.");
}
deleteRequest.onerror =
function() {
console.log("Error deleting the DB");
//alert("Error deleting the DB");
};
//"Error deleting the DB";
deleteRequest.onsuccess = function() {
console.log("Deleted OK.");
alert("*** NOTE : Requires page refresh to see the DB removed from the Resources IndexedDB tab in Chrome.");
//WriteOutText("Database deleted.");
};
};
}
}
Semplicemente curioso. Perché vuoi rimuoverlo? – hequ
@hequ Test di verifica automatici. – aknuds1
possibile duplicato di [Come eliminare indexedDB in Chrome] (http://stackoverflow.com/questions/9384128/how-to-delete-indexeddb-in-chrome) – Josh