2015-03-31 2 views
0

Я пытаюсь найти модель на основе пары, как это:Emberjs + Эмбер-данные найти с парами

this.store.find('slide', {slideCategory: category}); 

Но возвращение: (Edit полного стека трассировка)

TypeError: Cannot read property 'length' of undefined 
at hi.extend.pushMany (ember-data.min.js?551b0279246c3:3) 
at Dr.extend.load (ember-data.min.js?551b0279246c3:1) 
at ember-data.min.js?551b0279246c3:1 
at tryCatch (ember.debug.js?551b0279246c3:46898) 
at invokeCallback (ember.debug.js?551b0279246c3:46910) 
at publish (ember.debug.js?551b0279246c3:46881) 
at ember.debug.js?551b0279246c3:27205 
at Queue.invoke (ember.debug.js?551b0279246c3:871) 
at Object.Queue.flush (ember.debug.js?551b0279246c3:936) 
at Object.DeferredActionQueues.flush (ember.debug.js?551b0279246c3:741) 

Я запускаю этот код из действия в моем SlideRoute.

Вот что моя модель Slide выглядит

App.Slide = DS.Model.extend({ 
    title: DS.attr('string'), 
    note: DS.attr('string'), 
    slideCategory: DS.belongsTo('slideCategory') 
}); 

И моя модель SlideCategory

App.SlideCategory = DS.Model.extend({ 
    title: DS.attr('string'), 
    slides: DS.hasMany('slide', {async:true}) 
}); 

Это работает с сантехникой и здесь одна запись:

{ 
    id: 1, 
    slideCategory: 1, 
    title: 'Slide 1', 
    note: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eget hendrerit lacus. Donec venenatis sagittis turpis a aliquet. Ut nec ipsum ac sem lobortis ultrices id eu ante. Aenean ut vehicula odio, non imperdiet risus. Aenean mattis diam nec nulla tincidunt, vitae vehicula dui vehicula.', 
} 

Я с использованием ember 1.11 и ember-data 1.0.0-beta.16

EDIT

Все права, то кажется, что проблема была связана с запрашивая светильников, которые Isnt поддерживаются по умолчанию, Ember-данных.

Скажу, я иду с другим вариантом, чтобы мои слайды и я использую следующий фрагмент кода

this.store.find('slideCategory', category).then(function(slideCategory){ 
    slideCategory.get('slides').then(function(slides){ 

    } 
} 

я ожидал бы следующий фрагмент кода, чтобы дать мне множество слайдов, на которых я может зацикливаться, но объект кажется другим.

Это то, что я получаю:

Class { 
    __ember1427894067627: null 
    __ember_meta__: Object 
    __nextSuper: undefined 
    canonicalState: Array[3] 
     0: Class 
     1: Class 
     2: Class 
    length: 3 
    __proto__: Array[0] 
    currentState: Array[3] 
    isLoaded: true 
    isPolymorphic: undefined 
    length: 3 
    record: Class 
    relationship: ember$data$lib$system$relationships$state$has$many$$ManyRelationship 
    store: Class 
    type: App.Slide 
    __proto__: Class 

Это кажется почти что, но я не знаю, как цикл через этот объект. Кажется, что 3 элемента в каноническом массиве State - мои 3 слайда, которые я ищу. Когда я открываю этот объект класса, я получаю именно то, что будет выглядеть объект слайда.

Извините, если это кажется глупым, но я новичок в ember, и я не мог найти ответа на этот вопрос.

+0

Какая ценность 'категории' на вашем маршруте? – albertjan

+0

В этом случае это 1. Но даже если я переустановил его на {slideCategory: 1} или {id: 'fixture-0'}, это не сработает. Пока добавлен параметр, появляется ошибка. – Mathg16

+0

адаптер адаптера не поддерживает запрос, но это не объясняет вашу ошибку. вы можете вставить весь стек? – albertjan

ответ

0

Не используйте мини-версию данных ember-данных, которая не содержит много отладочной информации. Функция pushMany должна всегда получать массив, и есть Ember.assert охранники, которые расскажут вам с хорошим сообщением об ошибке, что происходит. Минимизированная версия должна использоваться в производстве не в тестах.

Это также объясняет, почему вы не получаете сообщение об ошибке, касающееся адаптера адаптера, не поддерживающего запросы.