2013-02-26 3 views
0

내 API에서 데이터를 가져 오려면 최신 버전의 ember-data (버전 11) 및 REST 어댑터를 사용하고 있습니다. 반환 된 JSON의 샘플은 다음과 같습니다Ember 데이터 매핑

{ 
    "events": [ 
     { 
      "id": "5118dd8c4c80866ef2000051", 
      "title": null, 
      "starts_at": 1361901600, 
      "ends_at": null, 
      "currency": "SEK", 
      "cents_door": 4000, 
      "cents_advance": null, 
      "price_door": "40.00 kr", 
      "price_advance": null, 
      "age_limit": null, 
      "venue_section": "PLAYHOUSE", 
      "description": null, 
      "url": null, 
      "repeats": null, 
      "repeats_until": null, 
      "venue_id": "nefertiti-jazz-club", 
      "act_ids": [ "marias-playhouse" ] 
     } 
    ] 
} 

모델은 다음과 같습니다

App.Event = DS.Model.extend 
    title: DS.attr('string') 
    startsAt: DS.attr('number') 
    endsAt: DS.attr('number') 
    currency: DS.attr('string') 
    centsDoor: DS.attr('number') 
    centsAdvance: DS.attr('number') 
    priceDoor: DS.attr('string') 
    priceAdvance: DS.attr('string') 
    ageLimit: DS.attr('string') 
    venueSection: DS.attr('string') 
    description: DS.attr('string') 
    url: DS.attr('string') 
    repeats: DS.attr('string') 
    repeatsUntil: DS.attr('string') 
    venue: DS.belongsTo('App.Venue') 
    acts: DS.hasMany('App.Act') 

을하지만 데이터를 요청할 때, 요청이 성공적으로 완료,하지만 난 콘솔에서이 오류가 발생합니다 :

Uncaught Error: assertion failed: Your server returned a hash with the key events but you have no mapping for it

어떤 아이디어가 잘못 되었나요?

===

UPDATE : 내 Ember.js 응용 프로그램의 좀 더 추가 해요 요청으로.

내 RESTAdapter 설정 :

DS.RESTAdapter.registerTransform 'raw', 
    deserialize: (serialized) -> 
    serialized 
    serialize: (deserialized) -> 
    deserialized 

App.Store = DS.Store.extend 
    adapter: DS.RESTAdapter.create 
    url: LJ.CONFIG.api.url 
    revision: 11 

그리고 노선 :

App.Router.map -> 
    this.resource 'events', -> 
    this.route 'new' 
    this.resource 'event', path: '/events/:event_id', -> 
    this.route 'edit' 
    this.resource 'venue', path: '/venues/:venue_id', -> 
    this.route 'edit' 
    this.resource 'events' 
    this.resource 'act', path: '/acts/:act_id', -> 
    this.route 'edit' 
    this.resource 'events' 
    this.route 'search', path: '/search/:term' 
    this.route 'doc', path: '/docs/:doc' 

답변

1

많은 디버깅과 검색 후에 Ember.js가 아직 쿼리 문자열 매개 변수를 지원하지 않는 것 같습니다. 대신 다음과 같은 경로를 해킹해야했습니다.

App.Router.map -> 
    this.resource 'events', path: '/events/:country/:region/:city' 
    this.route 'eventsNew', path: '/events/new' 
    this.resource 'event', path: '/events/:event_id', -> 
    this.route 'edit' 
    this.resource 'venue', path: '/venues/:venue_id', -> 
    this.route 'edit' 
    this.resource 'events' 
    this.resource 'act', path: '/acts/:act_id', -> 
    this.route 'edit' 
    this.resource 'events' 
    this.route 'search', path: '/search/:term' 
    this.route 'doc', path: '/docs/:doc' 

이것은 완벽하지는 않지만 지금은 작동합니다. 분명히 쿼리 문자열 지원은 가까운 장래의 릴리스에 예정되어 있습니다.

+0

와트? 구문을 수정하고 더 설명 할 수 있습니까? 아직도 관련이 있습니까? – netpoetica

1

응답은 언뜻보기에 완벽한 보인다.

잘못된 요청에 대해 잘못된 형식을 보내는 것 같습니다.

이 형식은 하나의 find (GET /events/5118dd8c4c80866ef2000051)

이 응답을 반환하는 경우이 오류를 얻을 수 있습니다, 어떤은 그러나, findAll 또는 findQuery (GET /events)

을 의미한다, 많은 events 유효 이 경우 (event 하나만 가져 오는 경우) 응답은 다음과 같이 표시되어야합니다.

{ 
    "event": { 
    "id": "5118dd8c4c80866ef2000051", 
    "title": null, 
    // ... rest of attributes 
    } 
} 
+0

올바른 형식입니다. "events"키 아래에 여러 이벤트가 반환되며 "event"키 아래에 단일 이벤트 만 반환됩니다. Ember 및 ember-data는 단일 이벤트에 대해 정상적으로 작동합니다. 여러 경로가있는이 경로에서이 오류가 발생합니다. –

+0

위의 응답을 반환하는 요청의 URL은 무엇입니까? –

+0

아직 공개되지 않았지만 URL은 다음과 같이 보입니다 : http : //lj-web.dev/#/events/? location = goteborg-vastra-gotaland-county-sweden & origin = 57.70412399999999 % 2C11.9788316'. 올바른 API 응답이 반환되지만 엠버 데이터는 단지 그것을 좋아하지 않는 것처럼 보입니다 ... –