Loki.js потерял данные в Ionic Apps

Я разрабатываю приложение Ionic, используя loki.js, но каждый раз, когда оно обновляет приложение, нажимаю f5, и я теряю все данные, хранящиеся в базе данных loki. Почему это случилось?

Я не использую chache в моем ионном приложении.

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" данные в памяти будут записываться в файл JSON каждые 5 секунд (вы можете настроить это значение по своему усмотрению).

РЕДАКТИРОВАТЬ Я добавил код, который я использую для сохранения нового документа в моей коллекции, и даже при обновлении страницы данные сохраняются правильно. Я использую "автосохранение" в настройках БД, может быть, вы также можете установить его, если есть путь, который неправильно корректируется, когда вы явно запускаете сохранение.

Поместите файл в каталог /Users/xxx - тут произошли волшебные вещи, программа работает нормально.

Другие вопросы по тегам