【问题标题】:Loki.js lost data in Ionic AppsLoki.js 在 Ionic 应用程序中丢失数据
【发布时间】:2016-02-21 03:08:17
【问题描述】:

我正在使用 loki.js 开发 Ionic 应用程序,但每次刷新应用程序时按 f5,我都会丢失存储在 loki 数据库中的所有数据。 为什么会这样?

我在我的 ionic 应用程序中没有使用 chache。

【问题讨论】:

  • 添加到@Luca 的答案,您是否确保在刷新页面之前的任何阶段都有db.saveDatabase() 调用?如果数据库没有保存,它就不会持续存在 - 显然。
  • 我做到了,我丢失了数据这里是我的代码:function addUser(user) { _user.insert(user); _db.saveDatabase(); };
  • 我应该使用持久性适配器吗?
  • 我也有这个问题,但只对其他的一些收藏品来说一切正常
  • 我遇到了同样的问题:我有 3 个集合,2 个工作正常,最后一个从未保存... 3 个集合使用相同的代码。

标签: ionic-framework lokijs


【解决方案1】:

可能是当你按下 F5 时,保存在内存中的数据还没有写入目标 json 文件。 您可以尝试在实例化 loki 时明确设置保存数据的时间范围:

var _db = new Loki('./database/db.json', {
            autoload: true,
            autosave: true,
            autosaveInterval: 5000 // 5 secs
        });

function add(newPatient) {
        return $q(function(resolve, reject) {
            try {                        
                    var _patientsColl = GetCollection(dbCollections.PATIENTS);
                    if (!_patientsColl) {
                        _patientsColl = _db.addCollection(dbCollections.PATIENTS,{indices:['firstname','lastname']});
                    }
                    _patientsColl.insert(newPatient);
                    console.log('Collection data: ', _patientsColl.data);
                    resolve();
            }
            catch (err) {
                reject(err);
            }
        });
    }

function GetCollection(collectionName){
        return  _db.getCollection(collectionName);
    }

使用“autosaveInterval”,内存中的数据将每 5 秒写入 JSON 文件(您可以根据需要调整此值)。

编辑 我添加了用于将新文档保存到我的集合中的代码,即使刷新页面,数据也可以正确存储。我在数据库设置中使用“自动保存”,也许您也可以设置它,以防在您显式触发保存时没有正确捕获路径。

【讨论】:

  • 我做到了,但它仍然丢失了数据。
【解决方案2】:

把文件放到/Users/xxx目录下,神奇的事情发生了,程序正常运行了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2016-10-22
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多