Ember.js find()只返回一个项目

时间:2014-02-19 19:27:52

标签: ember.js ruby-on-rails-4 ember-rails

我已经设置了一个API,并尝试使用Ember.js DS.RESTAdapter来获取并遍历表中的所有记录。目前它正在部分工作,但不是获得所有记录我只得到一个(最后一条记录是具体的)。因此,使用下面的代码,返回的模型的长度为1,所列出的所有内容都是Gale Sayers。 JSON有什么问题吗?以下是API返回的JSON:

{
    "users":[
        {
            "id":{"$oid":"52f94fc6477261d1a9110000"},
            "first_name":"Jim",
            "last_name":"Browne",
            "email":"user186248@example.com"
        },
        {
            "id":{"$oid":"52f4088c477261b72a000000"},
            "first_name":"Gale",
            "last_name":"Sayers",
            "email":"user186248@example.com"
        }
    ]
}

供参考,这是我的Ember.js代码的相关部分:

window.App = Ember.Application.create({
    rootElement: '#ember-app',
    Resolver: Ember.DefaultResolver.extend({
      resolveTemplate: function(parsedName) {
        parsedName.fullNameWithoutType = "app/" + parsedName.fullNameWithoutType;
        return this._super(parsedName);
      }
    })
});

App.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: 'api'
});

App.Store = DS.Store.extend({
    adapter: App.ApplicationAdapter
});

App.User = DS.Model.extend({
    first_name: DS.attr('string'),
    last_name: DS.attr('string'),
    email: DS.attr('string')
});

App.Router.map(function() {
});

App.ApplicationRoute = Ember.Route.extend({
});

App.IndexRoute = Ember.Route.extend({
    model: function() {
      return this.store.find('user');
    }
});

最后是模板文件:

application.handlebars

<b>Ember is working!</b>
{{outlet}}

index.handlebars

Length: {{model.length}}
<ul>
{{#each model}}
    <li>{{first_name}} {{last_name}}</li>
{{/each}}
</ul>

1 个答案:

答案 0 :(得分:0)

马丁对这个问题的评论是正确的。来自Mongoid的对象ID是问题所在。我找到了另一个具有相同问题的stackoverflow帖子和一个很好的解决方案:Ember model only loads last record