0

私は 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 を使用しています。

4

2 に答える 2

1

サイドロード応答でmodule_idは、id.

(または、ember-dataを使用するように構成できますmodule_idが、サーバーの応答をフォーマットする方が簡単な方法でしょうか?)

--- 説明のために編集 ---

元のREST呼び出しが「完全に機能している」かどうかはわかりません。なしidember-datamodule、最初にサイドロードした 2 つの を認識しますが、 noを認識します。そのため、それらがそれぞれおよびidであることがわかりません。デフォルト (変更可能) では、が呼び出されることを想定しています。your (および) は通常のプロパティとして扱われます。module12ember-dataididmodule_iduser_id

次の API 呼び出し (/modules?ids[]=1&ids[]=2おそらく) では、要求された 2 つの と 2 つの が戻ってきたので、それらは要求された 2 つであるはずであるとember-data暗黙のうちに想定します。これを返送してみてくださいmodulemodule

{
    "modules": [
        {"module_id": 3, "name": "Foo module"},
        {"module_id": 4, "name": "Bar module"}
    ]
}

request/modules?ids[]=1&ids[]=2の場合でも、「成功した」観察結果が得られます。

-responseを試してみApp.Module.find(1).get('name')てください。-response で試してみると、期待どおりの結果が得られます。module_idundefinedidAccount settings

于 2013-05-29T08:54:17.553 に答える