【发布时间】:2015-03-31 19:59:22
【问题描述】:
我正在尝试基于这样的参数找到一个模型:
this.store.find('slide', {slideCategory: category});
但它返回:(编辑完整的堆栈跟踪)
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 中的操作运行此代码。
这是我的幻灯片模型的样子
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
编辑
好吧,看来问题与查询夹具有关,ember-data默认不支持。
假设我使用另一个选项来获取我的幻灯片,我使用以下代码
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
这似乎差不多,但我真的不知道如何循环这个对象。 canonicalState 数组中的 3 个元素似乎是我正在寻找的 3 张幻灯片。当我打开该类对象时,我得到了幻灯片对象的确切外观。
对不起,如果这看起来很愚蠢,但我是 ember 新手,我找不到这个问题的答案。
【问题讨论】:
-
您的路线中
category的值是多少? -
在这种情况下它是 1。但即使我将它硬编码为 {slideCategory: 1} 或 {id: 'fixture-0'} 它也不起作用。只要有参数添加,错误就会出现。
-
夹具适配器不支持查询,但这并不能解释您的错误。你能粘贴整个堆栈跟踪吗?
-
TypeError: 无法在 Dr.extend.load (ember-data.min. js?551b008dd7991:1) at ember-data.min.js?551b008dd7991:1 at tryCatch (ember.debug.js?551b008dd7991:46898) at invokeCallback (ember.debug.js?551b008dd7991:46910) at publish (ember.debug .js?551b008dd7991:46881) at ember.debug.js?551b008dd7991:27205 at Queue.invoke (ember.debug.js?551b008dd7991:871) at Object.Queue.flush (ember.debug.js?551b008dd7991:936) at Object.DeferredActionQueues.flush (ember.debug.js)
-
您应该编辑您的帖子并将堆栈跟踪放在那里。在 cmets 中很难阅读。
标签: ember.js model ember-data has-many param