jeudi 10 mars 2016

The some of hasMany value are gettting lost in ember

I have ember app which use ember-data (1.13.8).I have model feed and photo.

feed.js(model)

import DS from 'ember-data';

const {attr} = DS;

export default DS.Model.extend({
     gallery_name:attr('string'),
     thumbnail_url:attr('string'),
     is_following:attr('boolean'),
     time:attr('string'),
     description:attr('string'),
     feedPhotos:DS.hasMany('photo',{async:false'})
});

photo.js(model)

import DS from 'ember-data';

export default DS.Model.extend({
  feed: DS.belongsTo('feed'),
  url: DS.attr('string'),
  profilePic: DS.attr('string'),
  userName: DS.attr('string'),
  userKarma: DS.attr('number'),
  caption: DS.attr('string'),
  numComments: DS.attr('number'),
 )}

feed.js(adapter)

import DS from 'ember-data';
import Ember from 'ember';

const{service} = Ember.inject;

export default DS.RESTAdapter.extend({
  fakeSignup:service('fake-session'),

  headers:Ember.computed('fakeSignup.token',function(){
    var token  ="token " + this.get('fakeSignup.token');
    return{"authorization":token};
  }),
  buildURL (modelName, id, snapshot, requestType, query) {
    return this._super(modelName, id, snapshot, requestType, query) + '/';
    },
  host:"http://ift.tt/1YCDXwr",
  shouldReloadAll() { return true; }  
});

feed.js(serialixer.js)

import DS from 'ember-data';

export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin,{
  isNewSerializerAPI: true,
  primaryKey:'pk',
  attrs:{
    feedPhotos:{embedded:'always'}
  },
  normalize: function(typeClass, hash) {
    var fields = Ember.get(typeClass, 'fields');
    console.log("fields");
    fields.forEach(function(field) {
      var payloadField = Ember.String.underscore(field);
      if (field === payloadField) { return; }
      hash[field] = hash[payloadField];
      delete hash[payloadField];
    });
    return this._super.apply(this, arguments);
  }
});

photo.js(serializer.js)

import DS from 'ember-data';

export default DS.JSONSerializer.extend(DS.EmbeddedRecordsMixin,{
  isNewSerializerAPI: true,
  primaryKey:'pk',
  normalize: function(typeClass, hash) {
    var fields = Ember.get(typeClass, 'fields');
    console.log("photos fields");
    fields.forEach(function(field) {
      var payloadField = Ember.String.underscore(field);
      if (field === payloadField) { return; }
      hash[field] = hash[payloadField];
      delete hash[payloadField];
    });
    console.log('hi')
    return this._super.apply(this, arguments);
  }
});

Now when the request is made I am able to get the response from the server.It is being parsed into the Ember store also.But let say I have 5 photos inside a feed (which I can see in the network tab ).The ember-data only show 2 or 3 of them.From serializer, it is returning all the photos (I am counting).But it is not saving all photos in the store.Can anyone help me with the problem.Why it is behaving like.Thanks in advance.




Aucun commentaire:

Enregistrer un commentaire