2017-01-15 63 views
0

我使用Ember與Electron結合使用。ember本地存儲適配器:如何獲取數據並在其上工作

由於用戶可以爲應用程序定義一些設置,我認爲將設置數據存儲在本地存儲中是一個優雅的想法。

爲此我使用了ember-local-storage適配器。

存儲,刪除和顯示這些數據就像一個魅力BUT 這些設置應該用於某些功能,所以我想讓他們離開本地存儲。 我期待一個數組或JSON對象 - 甚至是本地存儲中顯示的相同格式。但我只收到一個巨大的抽象對象?!

這是我要存儲什麼(例如):

{"identifier":"identifier1","bid":"6653ggd245","name":"test1"} 
 
{"identifier":"identifier2","bid":"kkhd7765vv","name":"test2"}

這是顯示在localStorage的(開發工具):

{"buttons": 
 
    {"records": 
 
    {"i7lvj":{"id":"i7lvj","identifier":"identifier1","bid":"6653ggd245","name":"test1"},"i80vm":{"id":"i80vm","identifier":"identifier2","bid":"kkhd7765vv","name":"test2"} 
 
    }}}

這是我試圖訪問數據:

this.get('store').findAll('buttons').then(function(SavButtons){ 
 

 
     console.log(SavButtons); 
 
});// gett all stored buttons 
 

 

 
this.get('store').findRecord('buttons','i7lvj').then(function(SavButtons){ 
 

 
     console.log(SavButtons.data); 
 
});// get specific button -> works

該數據以生成參數數組用於承諾爲API請求的基礎。 我能做些什麼來獲得可重複使用的結構? 例如: 0:{} RECORD1 1 :{} RECORD2

還是說沒有存儲在應用程序關閉後,也許我失去了一些東西,用戶進行的設置更簡單/更好的辦法。

非常感謝!

+0

您可以嘗試'toArray'方法轉換爲普通數組。或者使用'forEach'遍歷並構建所需的結構並使用本地存儲適配器存儲並檢索它。 – kumkanillam

回答

0

首先,你確定你的模型叫做「按鈕」嗎?您可能需要使用

this.get('store').findAll('button') 

此外,你從商店收到的是Ember.ArrayProxy或其他一些類從Ember.Array延長。它有特殊的方法來處理元素,你應該嘗試那些

第二,我不認爲Ember數據適合設置。我發現創建自定義「設置」service並使用它更容易。讓我分享我使用node-webkit的my implementation。它不會爲你「按原樣」工作,但你可能會有一個想法。我支持文件和本地存儲(用於nw-app的文件和用於web-app的存儲),如果您只需要本地存儲,則可以簡化_persist_restore方法。

簡要說明它是如何工作的:這是一個基本的服務,修改後的init,setsetProperties方法。所以當你撥打你的控制器this.get('settings').set('key', vale);時,設置將會保存在本地存儲器中。當服務初始化時,設置將從存儲器加載到內存。一個限制:你必須明確地調用setsetProperties設置服務的方法,如果你將使用類似this.set('settings.key', value);的東西,設置將不會被保留。與ember數據相比,單獨服務的主要優點是您不需要爲不同類型的設置創建模型,您可以保存任何簡單值或POJO。

+0

是的,它被稱爲「按鈕」。我對Ember很新,說實話這比我想象的要複雜得多。我沒有真正瞭解模型的含義以及何時使用它們。我讀過幾篇文章,但它只是非常基本的東西。非常感謝分享!我會在週末嘗試一下。總而言之,這正是我需要的。我只想持久存儲一個帶有用戶設置的JSON對象。我以爲我使用這些模型時,他們甚至在那裏......但也許這就是目前爲止:) –

+0

@ HS_hendrix模型的創建與ORM中的模型相同(如果您熟悉後端開發)。模型表示一些數據結構,所以它應該適用於任何用戶數據。例如,在todo應用程序中,您有代表每個項目的模型。想法很好,但實踐Ember Data不靈活,有時會使代碼更復雜。 –

+0

@ HS_hendrix另外,你是否安裝了餘燼檢查器?它有助於調試這些問題。例如,你可以看到現在有什麼燼數據的存儲(如果它有任何記錄或沒有) –

相關問題