7

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

        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");
                }
            }
        });

它基本上对我有用。所以我只是用它,不知道这是否正确,请指教。


全部:

我对 Lokijs 很陌生,我想知道如何重新加载已持久化的数据库和集合?

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

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();
}

然后,当我刷新此页面时,如何从持久性中加载“mydb”和“用户”而不是创建新的(因为它将var db = new Loki("mydb");再次通过),是否有 API 来检查数据库是否存在?

4

2 回答 2

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

您需要将“env”属性分配给“BROWSER”

于 2020-08-25T10:12:47.363 回答
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

于 2019-01-22T17:07:43.023 回答