mardi 11 avril 2017

Not able to load the data with RESTSerializer

I am using the RESTSerializer and could not able to load to the data to model.

here is my code snippet.

model/sfresult.js:

   import DS from 'ember-data';
export default  DS.Model.extend({
   sfresults: DS.hasMany('sfresults1', { async: false }),
  //sfresults: DS.hasMany(),
  message: DS.attr('string')
});

model/sfresults1.js:

       import DS from 'ember-data';

 export default  DS.Model.extend({

  title: DS.attr('string'),
  description: DS.attr('string'),
  caseNumber: DS.attr('string'),
  lastModifiedDate: DS.attr('string'),
  type: DS.attr('string'),
  url: DS.attr('string'),
  searchText: DS.attr('string'),
  messageId: DS.attr('string'),
  sfresult:  DS.belongsTo('sfresult')
 });

JSON response :

     { 
     "sfresult":{  
     "message":"SUCCESS",
       "sfresults":[  
           {  
           "viewScore":"100.0",
            "caseNumber":"000005462",
            "id":"1d725883-15f2-4f18-927c-b14455440458",
            "url":"url1",
            "title":"title",
             "description":"",
             "lastModifiedDate":"12/29/16"
            },
           {  
              "caseNumber":"00007082",
               "status":"Closed",
              "id":"b79c0397-f544-45f0-8b91-e2bb7a386ebf",
              "url":"ur2",
               "title":"title1?",
               "description":"",
               "messageId":"500E000000DPA33IAH",
               "lastModifiedDate":"08/16/16"
            }

          ]
         "id":"2b238d70-01ce-4604-913f-29d4c5eeba60"
     }

  }

serializer/sfresult.js

  import RESTSerializer from 'ember-data/serializers/rest';
  import DS from 'ember-data';

  export default RESTSerializer.extend({
  modelNameFromPayloadKey: function(payloadKey) {

    if (payloadKey === 'sfresults') {
      return this._super(payloadKey.replace('sfresults', 'sfresults1'));
    } else {
      return this._super(payloadKey);
    }
  },

  normalizeResponse(store, primaryModelClass, payload, id, requestType) {

   let sfresults1 = payload.sfresult.sfresults;
    let normalizedPayload = {
        sfresults: sfresults1,
        id: payload.sfresult.id,
        message: payload.sfresult.message,
    };

      return this._super(store, primaryModelClass, normalizedPayload, id, 
    requestType);
    },

  });

controller

       let sfdata = this.store.query('sfresult',{ 'searchText': 
   inputSearchText, 'searchType' : 'SF' } );

It is loading the data into sfresult1 model but not loading into sfresult.js

it fails with following error.

        Assertion Failed: The response to store.query is expected to be an 
        array but it was a single record. Please wrap your response in an 
        array or use `store.queryRecord` to query for a single record.
   Error
    at assert (http://localhost:8080/assets/vendor.js:16249:13)
    at Object.assert (http://localhost:8080/assets/vendor.js:27921:34)
    at assert (http://localhost:8080/assets/vendor.js:76154:37)
    at http://localhost:8080/assets/vendor.js:86960:41
    at tryCatch (http://localhost:8080/assets/vendor.js:69077:14)
    at invokeCallback (http://localhost:8080/assets/vendor.js:69092:15)
    at publish (http://localhost:8080/assets/vendor.js:69060:9)
    at http://localhost:8080/assets/vendor.js:48963:16
    at invoke (http://localhost:8080/assets/vendor.js:10885:14)
    at Queue.flush (http://localhost:8080/assets/vendor.js:10953:9)

I am struck here at this point of couple of days. any help would be greatly appreciated.




Aucun commentaire:

Enregistrer un commentaire