如何从持久性重新加载Loki数据库和集合

时间:2016-01-19 17:53:44

标签: lokijs

[更新] 我后来发现了一些例子:

LocalDate date = LocalDate.of(2015, 8, 11);
TypedQuery<MyEntity> query = this.em.createQuery("SELECT e FROM MyEntity e WHERE date BETWEEN :start AND :end", MyEntity.class);
query.setParameter("start", date.minusDays(2));
query.setParameter("end", date.plusDays(7));
MyEntity e = query.getSingleResult();

它基本上适合我。所以我只是使用它,不确定这是否正确,请告知。

所有

我对Lokijs很新,我想知道如何重新加载已保留的数据库和集合?

假设我构建了一个数据库和集合,然后我坚持它(比如单击一个按钮来触发持久化过程):

        this.db = new Loki("viewsaving", {
            autosave: true,
            autosaveInterval: 5000,
            autoload: true,
            autoloadCallback: function(){
                db_ready = true;
                if(db.getCollection("namedviews") == null ){
                    this.namedviews = db.addCollection("namedviews");
                }
                if(db.getCollection("timedviews") == null ){
                    this.timedviews = db.addCollection("timedviews");
                }
            }
        });

然后,当我刷新此页面时,如何加载&#34; mydb&#34;和&#34;用户&#34;从持久性而不是创建新的(因为它将再次通过var db = new Loki("mydb"); var users = db.addCollection('users'); // we bind this to a button click event function saveUser(){ users.insert({ name: 'joe' }); users.insert({ name: 'john' }); users.insert({ name: 'jack' }); db.saveDatabase(); } ),是否有API来检查数据库是否存在?

由于

2 个答案:

答案 0 :(得分:1)

const db = new loki('example.json', {
 env: 'BROWSER',
 autosave: true,
 autosaveInterval: 500,
 autoload: true })

您需要将'env'属性分配给'BROWSER'

答案 1 :(得分:0)

据我所知,它不可能持久保存到客户端数据库,因为浏览器访问本地文件系统很困难且通常不安全。 Lokijs支持浏览器本地存储中的持久性。 Loki使用适配器来实现对浏览器本地存储的持久性,该适配器默认为'localStorage适配器。

var db = new Loki("test.db", {
  autoload: true,
  autoloadCallback : databaseInitialize,
  autosave: true, 
  autosaveInterval: 4000,
 //adapter: 'default already set'
});

有关更多详细信息,请参见https://rawgit.com/techfort/LokiJS/master/jsdoc/tutorial-Persistence%20Adapters.html