Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save code0100fun/56b66407c79fe9a107a9328cb0cf6014 to your computer and use it in GitHub Desktop.
Save code0100fun/56b66407c79fe9a107a9328cb0cf6014 to your computer and use it in GitHub Desktop.
ember-data 3.6 infinit belongsTo fetch
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
var app = new EmberApp({
pretender: {
enabled: true
}
});
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
*/
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);
}
});
Person: {{model.name}} ({{model.id}})
<br>
Parent: {{model.parent.name}} ({{model.parent.id}})
{
"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