-
-
Save code0100fun/56b66407c79fe9a107a9328cb0cf6014 to your computer and use it in GitHub Desktop.
ember-data 3.6 infinit belongsTo fetch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Ember from 'ember'; | |
export default Ember.Controller.extend({ | |
appName: 'Ember Twiddle' | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var app = new EmberApp({ | |
pretender: { | |
enabled: true | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Model from 'ember-data/model'; | |
import attr from 'ember-data/attr'; | |
import { belongsTo, hasMany } from 'ember-data/relationships'; | |
export default Model.extend({ | |
name: attr('string'), | |
parent: belongsTo('person', { inverse: null }), | |
child: belongsTo('person', { inverse: 'parent' }) | |
}); | |
/* | |
! Have your inspector open, to see failing request errors. | |
Current behaviour: | |
Running the given code will try to get the parent twice. It returns a 404 twice on getting the parent, and it stops. (Still don't know why it tries twice) | |
Failing behaviour: | |
Remove the `{ inverse: null }` from the parent belongsTo will cause an infinit loop on getting the belongsTo, even when it returns a 404. | |
Worked well in ember-data versions before 3.6. Now fails because it uses _scheduleFetch instead of _fetchRecord: | |
https://github.com/emberjs/data/pull/5671/files#diff-fd4c34d9a34dfde73cd3413128a3c973R1563 | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Ember from 'ember'; | |
const person = | |
{ id: 1, | |
type: 'people', | |
attributes: { name: 'Tom' }, | |
relationships: { | |
parent: { data: { id: 2, type: 'people' } } | |
} | |
}; | |
const server = new Pretender(function() { | |
this.get('/people/1', request => { | |
return [200, {"Content-Type": "application/json"}, | |
JSON.stringify({ data: person })]; | |
}); | |
this.get('/people/:id', request => { | |
return [ 404, {"Content-Type": "application/json"} ]; | |
}); | |
}); | |
export default Ember.Route.extend({ | |
model() { | |
return this.store.findRecord('person', 1); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"version": "0.15.1", | |
"EmberENV": { | |
"FEATURES": {} | |
}, | |
"options": { | |
"use_pods": false, | |
"enable-testing": false | |
}, | |
"dependencies": { | |
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js", | |
"ember": "3.4.3", | |
"ember-template-compiler": "3.4.3", | |
"ember-testing": "3.4.3" | |
}, | |
"addons": { | |
"ember-data": "https://ember-data.herokuapp.com/builds/737cca348d909fe938d660b74d081062bdb39571/ember-data-3.12.0-canary.0.tgz", | |
"ember-cli-pretender": "3.0.0" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment