Использование IndexedDB с Electron

Простая база данных для локального приложения, совместимая с веб-приложением.

Наша демонстрация использует интерфейс Dexie.js для упрощения доступа к IndexedDB. Нужно просто включить в приложение небольшой скрипт:

<script src="dexie.min.js"></script> 

Использование IndexedDB, шаг за шагом

Приведенный ниже код доступен в полностью функциональном электронном приложении для скачивания. На этой странице представлен только исходный код.

1) Создание основы и определение схемы

var db = new Dexie("MyDB")

db.version(1).stores({
  mytable: 'name,data'
})

Эта база данных имеет одну таблицу, «mytable», и два столбца, «name» и «data».

2) Открыть базу данных

var err = document.getElementById("err")
err.innerHTML = "Database open"

db.open().catch(function(error) {
  err.innerHTML = "Can't open the database! Error:" + error
})

3) Добавить несколько записей

function sayAdded() {
  document.getElementById("added").innerHTML += "Record added!"
}

db.mytable.put({name: "x86", data: "8 MB RAM, 256 GB SSD"}).then(sayAdded)
db.mytable.put({name: "ARM", data: "2 MB RAM, 32 GB EMMC"}).then(sayAdded)

Строки описаны в объектах JS. В демо отображается сообщение при добавлении строки, но ее можно удалить в конечном приложении.

4) Найти данные

function showData(data) {
  document.getElementById("data").innerHTML += data[0].data
}

async function getData() {
  var result = await db.mytable.where('name').equals('ARM').toArray()
  showData(result)
}
getData()

Используются асинхронные/авантюры, чтобы убедиться, что данные доступны до их обработки. В этой демонстрации обработка заключается только в их просмотре.

Когда и зачем использовать IndexedDB

?

Это стандартный способ постоянно хранить большие объемы данных и скриптов и получать их с помощью запросов... Таким образом, это позволяет получить все преимущества базы данных без установки чего-либо!

Ваша база данных будет доступна из нескольких приложений (поскольку они находятся в одном домене, localhost), данные являются общими. Но у этого может быть недостаток. Когда Chrome не хватает места на жестком диске, он без предупреждения стирает всю базу данных! Потерять все данные можно за доли секунды. Этого можно избежать, создав постоянную базу с помощью этой команды:

navigator.storage.persist()

Эта команда реализована в Chrome и, следовательно, работает с Electron, она не распространяется на другие браузеры.

Введите: electron main.js, чтобы запустить демонстрацию .