Ember由物业找到

时间:2013-10-08 09:39:39

标签: javascript ember.js

无法从我的模型中找到记录

Ember版本:

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存在

2 个答案:

答案 0 :(得分:1)

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

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

关于Edu的评论,如果您调用商店的find方法,Ember Data不会执行常规查找。在幕后,调用findQuery并返回DS.RecordArray的实例。这不是一个常规的JavaScript数组,所以你需要尊重Ember的工作方式以及它如何处理数组。

我建议您阅读Ember指南中的DS.RecordArray。此外,如果您打算使用Ember Data,那么您不应该害怕探索其来源。 Ember Data是一个雄心勃勃的项目,文档仍在进行中。因此,Ember Data的来源是您最重要的信息来源。

答案 1 :(得分:0)

尝试使用getter ......

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