本文整理匯總了TypeScript中promised-db.transaction函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript transaction函數的具體用法?TypeScript transaction怎麽用?TypeScript transaction使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了transaction函數的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: saveCatalog
saveCatalog(catalog: Catalog, indEntries: IndexedEntry[], sti: SerializedTextIndex) {
const header: CatalogHeader = {
issue: catalog.issue,
theme: catalog.theme,
stats: catalog.stats,
savedAt: new Date()
};
return this.db_.transaction(["headers", "entries", "textindexes"], "readwrite",
(tr, { timeout }) => {
console.info(`Storing issue ${header.issue} with ${indEntries.length} entries and textindex`);
timeout(10000);
const headers = tr.objectStore("headers");
const entries = tr.objectStore("entries");
const textindexes = tr.objectStore("textindexes");
headers.put(header);
const textIndex: PersistedTextIndex = {
issue: catalog.issue,
data: sti
};
textindexes.put(textIndex);
for (const entry of indEntries) {
entries.put(entry);
}
})
.catch(error => {
console.warn(`Error saving catalog ${catalog.issue}`, error);
throw error;
});
}
示例2: persistedIssues
persistedIssues() {
return this.db_.transaction("headers", "readonly",
(tr, {getAll}) => {
const issueIndex = tr.objectStore("headers").index("issue");
return getAll<CatalogHeader>(issueIndex, undefined, "nextunique"); // while the key is "unique", a bug in Saf10 makes multiple indexes. Fixed in STP.
})
.catch(() => []);
}
示例3: purgeAllData
purgeAllData() {
return this.db_.transaction(["headers", "entries", "textindexes"], "readwrite",
(tr, {}) => {
const headers = tr.objectStore("headers");
const entries = tr.objectStore("entries");
const indexes = tr.objectStore("textindexes");
headers.clear();
entries.clear();
indexes.clear();
});
}
示例4: saveCatalogTextIndex
saveCatalogTextIndex(issue: number, sti: SerializedTextIndex) {
const data: PersistedTextIndex = {
issue,
data: sti
};
return this.db_.transaction("textindexes", "readwrite",
(tr, {}) => {
const textindexes = tr.objectStore("textindexes");
textindexes.put(data);
})
.catch(error => {
console.warn("Error saving textindex: ", error);
throw error;
});
}
示例5:
.then(entryKeys => {
return this.db_.transaction(["headers", "entries", "textindexes"], "readwrite",
(tr, {}) => {
const headers = tr.objectStore("headers");
const entries = tr.objectStore("entries");
const indexes = tr.objectStore("textindexes");
if (entryKeys.length > 0) {
const range = IDBKeyRange.bound(entryKeys[0], entryKeys[entryKeys.length - 1]);
entries.delete(range);
}
headers.delete(issue);
indexes.delete(issue);
});
});
示例6: loadCatalog
loadCatalog(issue: number) {
return this.db_.transaction(["headers", "entries", "textindexes"], "readonly",
(tr, {request, getAll, timeout}) => {
timeout(5000);
const headerP = request(tr.objectStore("headers").get(issue));
const issueIndex = tr.objectStore("entries").index("issue");
const entriesP = getAll<IndexedEntry>(issueIndex, issue);
const ptiP = request(tr.objectStore("textindexes").get(issue));
return Promise.all([headerP, entriesP, ptiP])
.then((result) => {
const pti = result[2] as PersistedTextIndex | undefined;
return {
header: result[0] as CatalogHeader,
entries: result[1] as IndexedEntry[],
sti: pti && pti.data
};
});
})
.catch(() => null);
}
示例7: destroyCatalog
destroyCatalog(issue: number) {
return this.db_.transaction(["entries"], "readonly",
(tr, {getAllKeys}) => {
const issueIndex = tr.objectStore("entries").index("issue");
return getAllKeys<number>(issueIndex, issue);
})
.then(entryKeys => {
return this.db_.transaction(["headers", "entries", "textindexes"], "readwrite",
(tr, {}) => {
const headers = tr.objectStore("headers");
const entries = tr.objectStore("entries");
const indexes = tr.objectStore("textindexes");
if (entryKeys.length > 0) {
const range = IDBKeyRange.bound(entryKeys[0], entryKeys[entryKeys.length - 1]);
entries.delete(range);
}
headers.delete(issue);
indexes.delete(issue);
});
});
}