2015-08-06 2 views
2

Я пытаюсь создать базу данных с коллекцией, добавленной в эту базу данных, и изменения, сохраненные в IndexedDB.Невозможно загрузить базу данных с помощью lokiJs

Ниже мой код

  1. Два контроллера SaveController и LoadController.

myApp.controller ('SaveController', [ '$ Объем', 'Локи', функция ($ Объем, Локи) {

// SAVE : will save App/Key/Val as 'finance'/'test'/{serializedDb} 
// if appContect ('finance' in this example) is omitted, 'loki' will be used 
var idbAdapter = new LokiIndexedAdapter('finance'); 

var db = new loki('ProjectDb', { adapter: idbAdapter }); 

var coll = db.addCollection('SampleCollection'); 
coll.insert({ SampleId: 'Sample text.....' }); 

db.saveDatabase(); // could pass callback if needed for async complete 

}]);

, а затем в моем LoadController я использовать

myApp.controller ('LoadController', [ '$ рамки', 'Loki', функция ($ области действия, Локи) {

var idbAdapter = new LokiIndexedAdapter('finance'); 

var db = new loki('ProjectDb', { adapter: idbAdapter, autoload: true }); 
db.loadDatabase({}, function (result) { 
    console.log(result); 
}); 

alert(db.getCollection("SampleCollection")); 

} ]);

Я получаю null, когда я предупреждаю «alert (db.getCollection (« SampleCollection »)); , Он никогда не входит в обратный вызов метода loadDatabase.

Есть ли что-то, что мне не хватает?

IndexedDB в браузере

IndexedDB

Здесь страницу HTML

Page HTML

lokijs script controller

Edit для реализации LocalStorage по умолчанию

Я использую реализацию по умолчанию для Локи JS и я пытаюсь загрузить автономный дб показывает результат в нуле каждый раз, даже несмотря на то, дб существует

var offlineDb = new loki('DbOfflineNew'); 
    offlineDb.loadDatabase({},function (result) { 
     console.log(result); 
     if (result == null) { 
      alert('loading for first time..'); 
     } 
     else { 
      alert('existing load..'); 
     } 
    }); 

Каждый раз, когда предупреждение «загрузка в первый раз. . "уволен .. Любую вещь, которую я здесь отсутствует ...?

ответ

4

В принципе, вся ваша логика должна быть в обратном вызове loadDatabase. Если вы попробуете console.log, сбор до его загрузки будет пустым. Многие попадают в эту ловушку.

Других слов:

myApp.controller('LoadController', ['$scope', 'Loki', function ($scope, Loki) { 

var idbAdapter = new LokiIndexedAdapter('finance'); 

var db = new loki('ProjectDb', { adapter: idbAdapter, autoload: true }); 
db.loadDatabase({}, function (result) { 
    console.log(result); 
    // put your log call here. 
    alert(db.getCollection("SampleCollection")); 
}); 
}]); 

Надеется, что это помогает.

+0

Это был бы канонический ответ;) –

+0

Привет, Джо, я редактировал мой вопрос на этот раз, чтобы загрузить базу данных для реализации loki js по умолчанию и каждый раз значение в обратном вызове для метода loadDatabase имеет нулевое значение? – user581157

+0

Получил это, чтобы проверить работоспособность еще раз на сайте http://lokijs.org/#/docs#load, что результат никогда не возвращается для локальной реализации хранилища по умолчанию. благодаря – user581157