2016-02-21 20 views
4

我正在開發一個使用loki.js的Ionic應用程序,但每次刷新應用程序時按f5我都會丟失存儲在loki數據庫中的所有數據。 爲什麼發生?Loki.js在Ionic Apps中丟失數據

我在我的離子應用程序中不使用chache。

+0

增加@Luca的答案,你有沒有確保在任何階段出現了一個'db.saveDatabase()'調用您刷新頁面之前?如果數據庫沒有保存,它將不會持續 - 顯然。 –

+0

我做了它,我在這裏丟失的數據是我的代碼:'function addUser(user){__ __ _ _ _ _ _ _ _ _ _ _ _ _ _db.saveDatabase(); };' –

+0

shloud我使用了一個persitense適配器? –

回答

1

這可能是因爲當你按下F5鍵保存在內存中的數據不會被寫入到目標JSON文件呢。 你可以嘗試設置明確的時間範圍,當你實例洛基保存數據:

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秒(可以調整這個值根據你喜歡的)。

編輯 我說我用它來保存新文檔的代碼到我的收藏,甚至與頁面刷新,數據被正確地存儲。我使用DB設置中「自動保存」,也許你可以將其設置爲好,萬一有未正確趕上,當你明確地觸發保存路徑。

+0

我做到了,它仍然丟失了數據。 –