2015-11-04 72 views
2

我連接的API不使用JSON-API作爲響應格式,所以我不得不序列化我的Ember應用程序的響應。如何將關係序列化爲JSON-API而無需關係ID?

我遇到的問題是,從API我的回答是這樣的:

{ 
    @type: "application/x.app-name.nurse-collection+json", 
    @type.item: "application/x.app-name.nurse+json", 
    @type.collection: "application/x.app-name.nurse-collection+json", 
    @href: "http://192.168.33.10:3000/api/nurses{?includePatients}", 
    @item: "http://192.168.33.10:3000/api/nurses/{id}", 
    items: [ 
    { 
     @type: "application/x.app-name.nurse+json", 
     @type.item: "application/x.app-name.nurse+json", 
     @type.collection: "application/x.app-name.nurse-collection+json", 
     @href: "http://192.168.33.10:3000/api/nurses/1{?includePatients}", 
     id: 1, 
     Nurse: "Maria Holmes", 
     NurseTelephoneNo: "123 4567", 
     NurseMobileNo: "", 
     Email: "[email protected]", 
     Patients: { 
      @type: "application/x.app-name.patient-collection+json", 
      @href: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}", 
      @rel: "http://192.168.33.10:3000/api/nurses/1/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}" 
      } 
     }, 
     { 
     @type: "application/x.app-name.nurse+json", 
     @type.item: "application/x.app-name.nurse+json", 
     @type.collection: "application/x.app-name.nurse-collection+json", 
     @href: "http://192.168.33.10:3000/api/nurses/2{?includePatients}", 
     id: 2, 
     Nurse: "Julie Smart", 
     NurseTelephoneNo: "543 1234", 
     NurseMobileNo: null, 
     Email: "[email protected]", 
     Patients: { 
      @type: "application/x.app-name.patient-collection+json", 
      @href: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}", 
      @rel: "http://192.168.33.10:3000/api/nurses/2/patients{?name,gender,includeNurse,includeEvents,includeReferrals,includeReviews,includePanels,includeRetrospectives,includePhbs,includeDisputeStage2s,includeDisputeResolutionPanels,includeEthnicity,includeFirstLanguage,includeMaritalStatus,includeReligion,includeSecurityLevel,includeSexualOrientation,includeWhichReview}" 
     } 
    }, 

    ... 

    ] 
} 

因此,在這個例子中,patients可能是一個集合,但我不具備的id爲的hasMany關係直到我去到那個終點。

我想知道是否有一種方法能夠以符合JSON-API的方式對此進行序列化,但是一旦我的應用程序決定轉到patients端點,就會讓我異步加載關係數據。

回答

0

我會寫一個適合這種響應類型的自定義序列化程序,而不是將其轉換爲JSON-API規範。

它看起來並沒有關於患者記錄的任何信息(即ID列表),所以在此忽略它,除非您想爲hasMany設置link屬性。

異步加載關係數據可以很好地處理ember數據。當您獲得一組patient記錄並將它們添加到商店時,只要裝載的記錄每個都有nurse_id,它們將可用於nurse.get('patients')