Emberjs + ember-data用param查找

时间:2015-03-31 19:59:23

标签: ember.js model ember-data has-many param

我正在尝试找到一个基于这样的参数的模型:

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张幻灯片。当我打开那个类对象时,我得到了一个幻灯片对象的样子。

很抱歉,如果这看起来很愚蠢,但我是新手,我找不到这个问题的答案。

1 个答案:

答案 0 :(得分:0)

不要使用缩小版的ember-data,它会遗漏许多调试信息。 pushMany函数应始终接收一个数组,并且有Ember.assert个警卫,它们会告诉您一个很好的错误消息。缩小版本应该用于生产而不是测试。

这也解释了为什么您没有收到有关不支持查询的夹具适配器的错误消息。