Im using ember 2.18 and i was trying to access nested api. when im trying to access that i override buildUrl in adapter. i have two models programme and course which has a one to many relationship of programme has many courses
issue im getting here is im trying to access belongsTo model's id which is programme id from course but it is not there.
programme model
export default DS.Model.extend( {
name: DS.attr( 'string' ),
code: DS.attr( 'string' ),
welcome: DS.attr( 'string' ),
startDate: DS.attr( 'date' ),
endDate: DS.attr( 'date' ),
published: DS.attr( 'boolean' ),
core_group: DS.attr(),
courses: DS.hasMany( 'course',{async: true}) });
course model
export default DS.Model.extend( {
uid: DS.attr( 'string' ),
name: DS.attr( 'string' ),
abbreviation: DS.attr( 'string' ),
startDate: DS.attr( 'date' ),
endDate: DS.attr( 'date' ),
country: DS.attr( 'string' ),
timezone: DS.attr( 'string' ),
published: DS.attr( 'boolean' ),
programme: DS.belongsTo( 'programme', { async: true} )
});
adapter/mixin
import Ember from 'ember';
export default Ember.Mixin.create( {
findRecord: function( store, type, id, snapshot ) {
return this.ajax( this.buildURL( type.modelName, null, snapshot, 'findRecord' ), 'GET' );
},
buildURL: function( modelName, id, snapshot, requestType, query ) {
var local_snapshot = snapshot;
var url = this._super( modelName, id, snapshot, requestType, query ),
ancestorType = this.get( 'ancestorType' ),
namespace = this.get( 'namespace' ),
ancestor,
ancestorComponent,
position;
console.log(local_snapshot)
// make a big assumption here, that requests will only be for a given parent,
// not disparate parents
if ( local_snapshot instanceof Array ) ancestor = local_snapshot[ 0 ].get( `${ancestorType}.id` );
else ancestor = local_snapshot.get( `${ancestorType}.id` );
position = url.indexOf( namespace + '/' ) + namespace.length;
ancestorComponent = '/' + Ember.String.pluralize( ancestorType );
if ( ancestor ) ancestorComponent = ancestorComponent + `/${ancestor}`;
url = [ url.slice( 0, position ), ancestorComponent, url.slice( position ) ].join( '' );
return url;
}
});
adapter/course
import ApplicationAdapter from '../adapters/application';
import NestedMixin from '../adapters/mixins/nested';
export default ApplicationAdapter.extend(NestedMixin, {
ancestorType: 'programme'
} );
error im getting is
local_snapshot.get is not a function
when i look into model belongsToRelationships are empty means that it is not loaded correctly
Aucun commentaire:
Enregistrer un commentaire