Skip to content

find records from server, relationship array not pushed to offline store #34

@Leooo

Description

@Leooo

When using this.emberSync.find('post'), after fetching data from the server, the relationships are not pushed to the offline Store, only to the online Store: in ActiveModel serializer, extractArray pushes the relationships in the Store, while returning the primary Array. emberSync's find query uses the results returned by onlineSearch = this.onlineStore.find(type, query), which only returns the primary array.

To have the relationships pushed to the offlineStore, I had to override the ActiveModelSerializer:

export default DS.ActiveModelSerializer.extend({
 //(..)
  extractArray: function(store, primaryType, rawPayload) {
    //(..)
        if (isPrimary) {
          primaryArray = normalizedArray;
        } else {
          var records=this.container.lookup('store:main').pushMany(typeName, Ember.copy(normalizedArray,true));//added
          records.forEach(function(record){//added
            record.save();//added
          });//added
          store.pushMany(typeName, normalizedArray);
        }
      }
      return primaryArray;
    },

  extractSingle: function(store, primaryType, rawPayload, recordId) {
     //(..)
        if (isFirstCreatedRecord || isUpdatedRecord) {
          primaryRecord = hash;
        } else {
          var record=this.container.lookup('store:main').push(typeName, Ember.copy(hash,true));//added
          record.save();//added
          store.push(typeName, hash);
        }
      }, this);
    }
    return primaryRecord;
  },

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions