私は Ember を初めて使用し、他のどこにも重複していない問題を抱えているので、ばかげたことをしていると確信しています。私はこれらのモデルを持っています:
App.User = DS.Model.extend({
username: DS.attr("string"),
userId: DS.attr("number"),
modules: DS.hasMany("App.Module")
});
App.Module = DS.Model.extend({
moduleId: DS.attr("number"),
name: DS.attr("string")
});
私のモジュールモデルは、ユーザーがいくつか持つことができる単なるコンテナであり、多くのユーザーが同じモジュールを共有する可能性があることに注意してください-それらは実際にはサーバー上の列挙型で表されます。そのため、バックエンドには Module > Users のマッピングがないため、DS.ownedBy または DS.hasMany を App.Module から除外しました。ただし、「users: DS.hasMany('App.User')」を使用してテストを試みたところ、同じ結果が得られました。必要であることが判明した場合は、そのようなマッピングを維持することもできますが、今のところそうする理由が他にないため、そのようなテーブルをデータベースに追加することを余儀なくされるのは少し残念です.
認証に Ember.Auth を使用しています。アプリが読み込まれてログインすると、サーバーは (予想どおり) 要求します。
users/nathan?authToken=<token>
残り火のデータドキュメントによると、結果は私がそうあるべきだと思う通りです:
{
"user": {
"username": "nathan",
"user_id": 1,
"module_ids": [1,2]
},
"modules": [
{"module_id": 1, "name": "Account Settings"},
{"module_id": 2, "name": "Manage Websites"}
]
}
次に、Chrome コンソールで次のようにテストしています。
App.Auth.get("user").get("modules");
また
App.User.find("nathan").get("modules");
どちらの場合も、Ember はモジュール 1 と 2 のデータを取得するようにサーバーにリクエストを送信します。同じリクエストを繰り返してもサーバーに戻らないため、その時点で結果が適切に保存されています。無視しているのは単にサイドロードです。
私は ember-data-0.13 で ember-1.0.0-rc4 を使用しています。