我是 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 模型只是一个 User 可以拥有几个的容器,并且许多用户可能共享相同的模块 - 它们实际上由服务器上的 Enum 表示。因此,后端没有 Module > Users 的映射,因此我将 DS.ownedBy 或 DS.hasMany 排除在 App.Module 之外。但是,我也尝试在其中使用“用户:DS.hasMany('App.User')”进行测试,结果相同。如果事实证明有必要,我可以维护这样的映射,但我现在没有其他理由这样做,所以被迫将这样的表添加到我的数据库中会有点不幸。
我使用 Ember.Auth 进行身份验证,当我的应用程序加载并登录时,服务器请求(如预期的那样):
users/nathan?authToken=<token>
根据 ember 数据文档,结果也是我认为应该的那样:
{
"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-1.0.0-rc4 和 ember-data-0.13。