2014-02-19 105 views
0

我设置了一个API,并试图使用Ember.js DS.RESTAdapter来获取并遍历表中的所有记录。目前它的部分工作正在进行,但并没有得到所有的记录,我只能得到一个(最后一个记录是特定的)。所以在下面的代码中,返回的模型的长度是1,所有列出的都是Gale Sayers。 JSON有什么问题吗?这是多数民众赞成由API返回的JSON:Ember.js find()只返回一个项目

{ 
    "users":[ 
     { 
      "id":{"$oid":"52f94fc6477261d1a9110000"}, 
      "first_name":"Jim", 
      "last_name":"Browne", 
      "email":"[email protected]" 
     }, 
     { 
      "id":{"$oid":"52f4088c477261b72a000000"}, 
      "first_name":"Gale", 
      "last_name":"Sayers", 
      "email":"[email protected]" 
     } 
    ] 
} 

仅供参考,这里是我的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

我认为问题在于,您使用的是ids对象。尝试将ID更改为:“ID”:“52f94fc6477261d1a9110000”。 – Martin

回答

0

马丁在他的问题意见是正确的。来自Mongoid的对象id是问题所在。我发现了另一个相同的问题和一个很好的解决方案stackoverflow帖子:Ember model only loads last record