【问题标题】:Unable to loadDatabase with lokiJs无法使用 lokiJs 加载数据库
【发布时间】:2015-08-06 15:30:34
【问题描述】:

我正在尝试创建一个数据库,其中将一个集合添加到该数据库中,并将更改保存到 IndexedDB。

下面是我的代码

  1. 两个控制器 SaveController 和 LoadController。

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

// 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', ['$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);
});

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

}]);

当我警告“alert(db.getCollection("SampleCollection"));”时我得到一个空值.它永远不会进入“loadDatabase”方法的回调。

我有什么遗漏的吗?

浏览器中的IndexedDB

这里是页面html

编辑默认本地存储实现

我使用 loki js 的默认实现,我尝试加载离线数据库,即使数据库存在,每次都显示结果为 null

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

每次警报“第一次加载..”被触发..我在这里遗漏了什么..?

【问题讨论】:

    标签: lokijs


    【解决方案1】:

    基本上所有的逻辑都需要在 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"));
    });
    }]);
    

    希望这会有所帮助。

    【讨论】:

    • 这将是规范的答案 ;)
    • 嗨,乔,我这次编辑了我的问题,为默认的 loki js 实现加载数据库,并且每次 loadDatabase 方法的回调中的值都带有空值?
    • Got it to working 在lokijs.org/#/docs#load 站点上再次检查发现,对于默认的本地存储实现,结果永远不会返回。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多