Разве плохо открывать несколько соединений с базой данных в indexedDB?

Я немного поработал с IndexedDB, и я могу успешно создать новую базу данных, создать магазин и добавить значение во время "на обновление необходимо, Что я не делаюпонять, база данных остается "открыть" или вам нужно заново открывать его внутри каждой функции, которой нужен доступ для чтения / записи информации в базе данных?

Например, здесьs мой код (который работает) для создания новой базы данных и вставки одной записи:

$(document).ready(function() {

var db;

function initDB() {
    console.log("opening db...");

    var req = indexedDB.open(dbName, version);
    req.onsuccess = function(event) {
      db = this.result;
      console.log("opening db is done");
    }

    req.onerror = function(event) {
      console.log("error opening db: ", event.target.errorCode);
    }

    req.onupgradeneeded = function(event) {
      db = event.target.result;
      var store = db.createObjectStore("creds", { autoincrement: true });
      store.add({ username:'none', password:'none'}, 1);
    }
  }

Что вызывает у меня путаницу, так это то, что когда мне нужно получить доступ к записям в этой базе данных, добавить дополнительные записи или удалить записи, я подумал, что могу просто создать новую функцию и вставить некоторые значения. Вот что у меня есть (что не получается):

  function saveCreds() {
    usr = $("#username").val();
    psw = $("#password").val();

    $.getJSON(baseURL + "cred-check/?callback=?", { username:usr, password:psw }, function(data) {
      if (data.creds_good == 'true'); {
        // NEXT LINE FAILS
        var store = db.transaction(['creds'], 'readwrite').objectStore('creds');
        var request = store.get(1);
        request.onsuccess = function (event) {
          var data = request.result;
          data.username = usr;
          data.password = psw;

          var requestUpdate = store.put(data, 1);
          requestUpdate.onerror = function(event) {
            console.log("error putting value...");
          }
        }
      }
    });
  }

этоsaveCreds иinitDB функция внутри$(document).ready() функция иdb переменная объявленавне initDB а такжеsaveCreds функции, новнутри $(document).ready() так что я думаю, что мой охват был в порядке.

Проблема в том,db переменная не определена. Я получаю ошибку:Cannot call method "transaction" of undefined

Значит ли это, что для каждой функции, которой требуется доступ к данным в базе данных, мне нужно заново открыть ее и переназначить для переменной, чтобы я мог манипулировать / читать данные в базе данных?

Ответы на вопрос(1)

Ваш ответ на вопрос