2013-10-08 128 views
0

无法从我的模型查找记录灰烬JS查找性能

灰烬版本:

DEBUG: ------------------------------- 
DEBUG: Ember  : 1.0.0 
DEBUG: Ember Data : 1.0.0-beta.2 
DEBUG: Handlebars : 1.0.0 ember.js 
DEBUG: jQuery  : 1.9.1 ember.js 
DEBUG: ------------------------------- 

型号:

App.Concert = DS.Model.extend({ 
    tour_id: DS.attr(), 
    tickets: DS.attr() 
}); 

发现:

this.get("store").find("concert", {tour_id: 1}).then(function(result) { 
      console.log("--------------"); 
      console.log(result.content.length); 
      console.log("--------------"); 
     }, function(error) { 
      console.log("broken"); 
     }); 

控制台:

------------- 
length: 0 
-------------- 

我无法通过属性从我的模型中查找记录。任何人都可以帮忙? 我知道用什么tour_id记录:1存在

回答

0

尝试使用干将......

console.log(result.get('length')); 
+0

长度仍然等于0 –

+0

你能提供一个小提琴吗? – Edu

1

埃杜实际上是部分正确的(见下文),但你没有得到任何回记录的真正原因很可能是API返回的格式。 Ember Data对其预期的数据类型以及结构如何非常严格。如果您在1tour_id的音乐会上查询您的API,那么这就是响应的样子。请注意,根对象是复数型号名称,关键是一系列音乐会。

{ 
    "concerts": [ 
    { 
     "id": 1, 
     "tour_id": 1, 
     "name": "cool concert" 
    }, 
    { 
     "id": 5, 
     "tour_id": 1, 
     "name": "awesome concert" 
    } 
    ] 
} 

对于埃杜的评论,如果你调用商店的find方法,灰烬中的数据没有进行正规的发现。在引擎盖下,调用findQuery并返回DS.RecordArray的实例。这不是一个普通的JavaScript数组,因此您需要尊重Ember如何工作以及它如何处理数组。

我建议在Ember指南中阅读DS.RecordArray。另外,如果您计划使用Ember Data,您不应该因探索其源代码而感到害怕。 Ember Data是一个雄心勃勃的项目,文档仍然是一项正在进行的工作。因此Ember Data的来源是您最重要的信息来源。