Skip to content

Instantly share code, notes, and snippets.

@pangratz
Forked from chrism/adapters.application.js
Last active May 4, 2016 16:24
Show Gist options
  • Save pangratz/0ae12471c9e179172822753df2871691 to your computer and use it in GitHub Desktop.
Save pangratz/0ae12471c9e179172822753df2871691 to your computer and use it in GitHub Desktop.
Normalizing Issue with JSON API
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
namespace: 'api'
});
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['petName'],
petName: null,
filteredOwners: Ember.computed('petName', 'model.@each.pets.[]', function() {
let petName = this.get('petName');
let ownersArray = this.get('model').toArray();
let filterPromise = Ember.RSVP.filter(ownersArray, owner => {
return owner.get('pets').then( pets => {
return pets.isAny('name', petName);
});
});
return DS.PromiseArray.create({
promise: filterPromise
});
})
});
export default function() {
const videos = {
"data": [
{
"type": "video",
"id": "f745bec3-7871-43f2-945f-4a96cce5b3df",
"attributes": {
"hyphenated-attribute": "present",
"simple": "also present"
}
}
]
}
getJSON('/api/videos', videos);
}
function getJSON(url, jsonResponse) {
$.mockjax({ url: url, responseText: jsonResponse });
}
import DS from 'ember-data';
export default DS.Model.extend({
hyphenatedAttribute: DS.attr('string'),
simple: DS.attr('string')
});
import Ember from 'ember';
import getMocks from '../mocks';
export default Ember.Route.extend({
init() {
this._super(...arguments);
getMocks();
},
model() {
// this works
// https://ember-twiddle.com/dcfb829a48dbbcabee77778ec459861a
// return this.store.findAll('video');
// this removes hyphenated attributes
return Ember.$.getJSON('/api/videos').then( response => {
this.store.pushPayload(response);
return this.store.peekAll('video');
});
}
});
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
});
<h1>Normalizing Issue</h1>
{{#each model as |video|}}
<p>hyphenated attribute: {{video.hyphenatedAttribute}}</p>
<p>simple: {{video.simple}}</p>
{{/each}}
{{outlet}}
{
"version": "0.4.8",
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.1.0",
"ember-data": "2.1.0",
"ember-template-compiler": "2.1.0",
"jquery-mockjax": "https://cdnjs.cloudflare.com/ajax/libs/jquery-mockjax/1.6.2/jquery.mockjax.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment