【问题标题】:How to reload Loki database and collection from persistence如何从持久性重新加载 Loki 数据库和集合
【发布时间】:2016-01-19 17:53:43
【问题描述】:

[UPDATE]我后来发现了一些类似的例子:

        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”和“users”而不是创建新的(因为它将再次通过var db = new Loki("mydb");),是否有 API 来检查数据库是否存在?

【问题讨论】:

  • 这方面有什么更新吗?
  • @User528491 已经很久了(我几乎不记得我为什么问这个问题了),你有没有尝试我问题的更新部分。我没有得到作者的回答
  • 您的问题找到解决方案了吗?
  • @Arash 抱歉,还没有。我已经很久没有问这个问题了,我们的基础设施已经改为服务器端,不再需要客户端数据库。不过我觉得你可以直接问乔(作者),他是一个非常乐于助人的人github.com/techfort
  • 您的更新方向正确。回调内部db 变量未定义,但一般情况下“就绪”逻辑是正确的。

标签: lokijs


【解决方案1】:
const db = new loki('example.json', {
 env: 'BROWSER',
 autosave: true,
 autosaveInterval: 500,
 autoload: true })

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

【讨论】:

    【解决方案2】:

    据我所知,它不可能持久保存到客户端数据库,因为浏览器访问本地文件系统很困难且通常不安全。 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

    【讨论】:

    • 浏览器提供IndexedDB API,因为HTML5。 LokiJS 支持它,带有custom adapter。 Chrome 的存储限制约为 30-60 兆(每个 DB;或每个集合,如果已分区)。
    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多