Ember local storage adapter: как получить данные и работать с ними

Я использую уголь в сочетании с электроном.

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

Для этого я использую адаптер ember-local-storage.

Хранение, удаление и отображение этих данных работает как шарм, но
Эти настройки должны использоваться в некоторых функциях, поэтому я хочу получить их из локального хранилища.
Я ожидал, что массив или объект 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 

Эти данные являются базой для создания массива params, который будет использоваться для обещаний для запросов API.
Что я могу сделать, чтобы получить это в многоразовой структуре ?
Например:
0: {record1}
1: {record2}

Или есть еще более простой / лучший способ сохранить настройки, сделанные пользователем после того, как приложение закрыто, возможно, я чего-то не хватает.

Большое спасибо!

1 ответ

  1. Во-первых, вы уверены, что ваша модель называется «buttons»? Вам вероятно нужно использовать

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

    Кроме того, то, что вы получаете из магазина, является Ember.ArrayProxy или какой-то другой класс, расширенный от Ember.Матрица. Он имеет специальные методы для работы с элементами, вы должны попробовать те

    Во-вторых, я не думаю, что данные Ember хороши для настроек. Я считаю, что гораздо проще создать пользовательский сервис «настройки» и использовать его. Позвольте мне поделиться своей реализацией, которую я использую с node-webkit. Это не будет работать для вас «как есть», но вы можете получить идею. I made it with support for both files and local storage (files for nw-app and storage for web-app), you can simplify _persistand _restoremethods if you need just local storage.

    Краткое объяснение того , как это работает: это базовая услуга с измененными initsetи setPropertiesметодами. Поэтому при вызове контроллера this.get('settings').set('key', vale);настройки будут сохранены в локальном хранилище. А при инициализации сервиса настройки будут загружаться из хранилища в память. Одно ограничение: вы должны явным образом вызвать setи setPropertiesметоды настройки сервиса, если вы будете использовать что-то вроде this.set('settings.key', value);, настройки не будут сохраняться. Основное преимущество отдельного сервиса над данными ember заключается в том, что вам не нужно создавать модели для разных типов настроек, вы можете сохранить любое простое значение или POJO.