Я играл с IndexedDB в Firefox (Ubuntu)
Есть ли способ визуализации содержимого баз данных IndexedDB? Или я должен делать это программно-союзнически?
Я играл с IndexedDB в Firefox (Ubuntu)
Есть ли способ визуализации содержимого баз данных IndexedDB? Или я должен делать это программно-союзнически?
Кровящая кромка Chromium builds, по сообщениям, позволяет просматривать содержимое IndexedDB на панели "Ресурсы" в Chrome devtools, но только я знаю, что один из способов неинтересно просматривать содержимое Firefox IndexedDB и загрузить файл .sqlite напрямую.
Firefox IndexedDB.sqlite файлы находятся в /Users/{USER}/Library/Application Support/Firefox/Profiles/{PROFILE}/indexedDB
в OS X и должны быть C:\Users\{USER}\AppData\Roaming\Mozilla\Firefox\Profiles\{PROFILE}
в Windows.
Я использую отличный (и бесплатный) инструмент для Firefox SQLite Manager, который является кросс-платформой.
Одна вещь, которую следует иметь в виду, состоит в том, что содержимое часто хранится как двоичные капли и, вероятно, не может быть понятным для человека. Ключи сохраняются как текст, однако они должны быть прочитаны вручную.
Обновить. Хотя локальные файлы остаются отличным способом просмотра баз данных и хранилищ IDB, у Chrome теперь есть отличные инструменты, доступные на панели "Ресурсы".
Я только что загрузил надстройку IndexedDB Browser для Firefox. Это работает хорошо. После загрузки он находится в:
Инструменты > Веб-разработчик > Обозреватель IndexedDB
https://addons.mozilla.org/en-US/firefox/addon/indexeddb-browserupdated-fix/
EDIT: Начиная с Firefox 26 файлы для IndexedDB переместились с
{PROFILE}/indexedDB/на
{PROFILE}/storage/persistent/Текущая версия (0.1.4) не обрабатывает это изменение. Однако его легко решить с помощью символической ссылки.
Местоположение Firefox indexedDB на Ubuntu:
~/.mozilla/firefox/*.default/storage/persistent/
или
~/.mozilla/firefox-trunk/*.default/storage/persistent/
Вы можете попробовать мой indexeddbviewer, он находится на http://linq2indexeddb.codeplex.com.
Следующее, что вам нужно сделать: - Добавьте следующие ссылки на свою страницу:
<script type="text/javascript" src="../Scripts/jquery-1.7.2.js"> </script>
<script type="text/javascript" src="../Scripts/jquery-ui-1.8.20.js"> </script>
<script type="text/javascript" src="../Scripts/Linq2IndexedDB.js"> </script>
<script type="text/javascript" src="../Scripts/IndexedDBViewer.js"> </script>
Это означает, что вам нужно получить jQuery + jQuery UI И linq2indexedDB (это моя библиотека, и вы можете получить ее также на http://linq2indexeddb.codeplex.com).
И чтобы заставить его работать, добавьте в тело следующее:
<body>
<p><label id="lblDatabaseName" for="txtDatabaseName">Database name:</label> <input type="text" id="txtDatabaseName" /><input type="button" id="btnViewDatabase" value="View database" /></p>
<div id="tabs">
<ul>
</ul>
</div>
</body>
Я попробую сделать более простой способ как можно скорее.
Другой способ - просто использовать мою библиотеку linq2indexeddb и создать новый экземпляр этого типа:
var db = window.linq2indexedDB("Database name", null, true)
если вы это сделали, вы можете вызвать средство просмотра атрибутов, которое предоставит вам всю информацию о базе данных indexeddb.
db.viewer
В новых версиях firefox инструменты разработчика поставляются с удобным инспектором хранилища.
https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector
В настоящее время вам нужно использовать ночную сборку firefox, чтобы получить ее
let db;
function createDB() {
let dbName = "Jokes";
let dbVersion = 5;
let request = indexedDB.open(dbName, dbVersion);
request.onupgradeneeded = e => {
db = e.target.result
console.log(db);
let jstore = db.createObjectStore("JokeStore", {keyPath: "title"});
let mstore = db.createObjectStore("MockStore", {keyPath: "title"});
alert("upgrade");
}
request.onsuccess = e => {
db = e.target.result
console.log(db);
alert("success");
}
request.onerror = e => {
alert("error"+e.target.error);
}
}
function addRecord(title, text) {
let tx = db.transaction("JokeStore","readwrite");
tx.onerror = e => alert(e.target.error);
let jstoretx = tx.objectStore("JokeStore");
jstoretx.add({title: title, text: text});
}
function viewNotes() {
let tx = db.transaction("JokeStore", "readonly");
let jstore = tx.objectStore("JokeStore");
let request = jstore.openCursor();
request.onsuccess = e => {
let cursor = e.target.result;
if (cursor) {
console.log(cursor.key, cursor.value.text);
cursor.continue();
}
}
}
createDB(); // Creates db if not there or opens an existing one
addRecord("Joke 1", "Knock Knock"); // Adds record
addRecord("Joke 2", "Elephant and the ant"); // Adds record
viewNotes(); // Displays all records in console