0

API をセットアップし、Ember.js DS.RESTAdapter を使用して、テーブル内のすべてのレコードを取得して反復処理しようとしています。現時点では部分的に機能していますが、すべてのレコードを取得するのではなく、1 つだけ取得しています (具体的には最後のレコード)。したがって、以下のコードでは、返されるモデルの長さは 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');
    }
});

最後に、テンプレート ファイル:

アプリケーション.ハンドルバー

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

index.handlebars

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

1 に答える 1

0

質問に対するマーティンのコメントは正しかった。Mongoid からのオブジェクト ID が問題でした。同じ問題と適切な解決策を持つ別のスタックオーバーフローの投稿を見つけました: Ember model only loaded last record .

于 2014-02-20T02:19:30.207 に答える