2015-02-01 5 views
0

Я пытаюсь получить полиморфные ассоциации, работающие для меня в Ember Data, но мне еще не удалась. Надеюсь, кто-то может взглянуть и сообщить мне, если я что-то упустил.Ember-Data Embedded Polymorphic Belongs Не работает

Я использую Ember 1.8.1 и Ember-Data 1.0.0-beta.14.1. Кроме того, мы используем синтаксис ECMAScript6 (импорт, экспорт по умолчанию).

В принципе, у нас есть только одна встроенная полиморфная связь, которая, похоже, не работает для нас. Если у кого-нибудь есть предложения или идеи о том, почему это не работает, я бы хотел помочь. Я застрял в этом на несколько дней.

Это в основном то, с чем мы столкнулись. Ошибка, которую я получаю возвращенное:
Ошибка: Assertion Ошибка: Вы можете только добавить «метаданных» запись в этой связи

// /app/models/metadata.js: 
 
export default DS.Model.extend({ 
 
    type: DS.attr('string'), 
 
    lastModified: DS.attr('number'); 
 
}); 
 

 
// /app/models/metadata-story.js 
 
import Metadata from '/app/models/metadata'; 
 
export default Metadata.extend({ 
 
    body: DS.attr('string') 
 
}); 
 

 
// /app/models/metadata-photo.js 
 
import Metadata from '/app/models/metadata'; 
 
export default Metadata.extend({ 
 
    url: DS.attr('string'), 
 
    width: DS.attr('number'), 
 
    height: DS.attr('number') 
 
}); 
 

 
// /app/models/post.js 
 
export default DS.Model.extend({ 
 
    headline: DS.attr('string'), 
 
    metadata: DS.belongsTo('metadata', {polymorphic: true}) 
 
}); 
 

 

 
// /app/serializers/post.js 
 
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,{ 
 
    attrs: { 
 
    metadata: {embedded: 'always'} 
 
    } 
 
}); 
 

 

 
// /app/routes/posts.js 
 
// Here is the code that is being run to load the records: 
 
export default Em.Route.extend({ 
 
    model: function(params){ 
 
    var query = { 
 
     start: params.start, 
 
     offset: params.offset 
 
    }; 
 
    return this.store.find('post', query); 
 
    } 
 
}); 
 

 

 
// Also, here is a sample of the Payload that the normalizePayload function is returning: 
 
{posts:[ 
 
    { 
 
    id: 0, 
 
    headline: 'Well, that is SOME story!', 
 
    metadata: { 
 
     body: 'This is the body...' 
 
    }, 
 
    metadataType: 'metadata-story' 
 
    }, 
 
    { 
 
    id: 1, 
 
    headline: 'Well Hello', 
 
    metadata: { 
 
     url: 'http://somewhere.com/pic.png', 
 
     width: 450, 
 
     height: 350 
 
    }, 
 
    metadataType: 'metadata-story' 
 
    } 
 
]} 
 

 
/* 
 
Another thing that I should mention is that I have tried setting the Ember.MODEL_FACTORY_INJECTIONS flag to both true and false, but it has not seemed to make any difference at this point. 
 
*/

ответ

0

Эта ошибка может происходить, если вы пытаясь изменить post модель metadata, установив ее явно или через привязку какого-либо рода, и set завершится с ошибкой, потому что значение metadata не является экземпляром модели metadata данных ember. Я бы посмотрел на все места в приложении, где делается такая модификация, и console.log значение, которое используется для установки metadata. Надеюсь это поможет.

+0

Спасибо за ответ. Я не называю «набор» нигде. Эта ошибка возникает в сериализаторе после вызова .find(). –

Смежные вопросы