【发布时间】:2014-06-13 15:35:48
【问题描述】:
在构建我的 restful api 时,我基本上遵循了 Ember 的 RESTAdapter 约定。
我有一个模型post 和一个模型tags,一个多对多的关系。因为我只会找到与帖子相关的标签,所以我没有定义相反的标签。
所以我在帖子模型tags: hasMany('tag') 中得到了这个,在restful api 中它返回tags: ["1", "2", "3"] 等等,就像它假设的那样。
所以现在我想知道如何在posts/1 url 上获取这些标签。当我在商店中查看时,它没有检索到任何标签。如何访问标签数据及其属性?
App.Tag = DS.Model.extend({
name: attr()
});
App.Post = DS.Model.extend({
active: attr(),
name: attr(),
organization: attr(),
user_id: attr(),
submitted_ts: attr(),
status: attr(),
tags: hasMany('tag')
});
{
"post": {
"0": {
"id": "1",
"active": "A",
"name": "This is a test title",
"organization": "Stryker",
"user_id": "0",
"submitted_ts": "1402664380",
"status": "finalized"
},
"tags": [
"30",
"1",
"14"
]
},
"tags": [
{
"id": "30",
"type": "asdf",
"name": "KNEE",
"pivot": {
"case_id": "1",
"id": "30"
}
},
{
"id": "1",
"type": "therapy",
"name": "more things",
"pivot": {
"case_id": "1",
"id": "1"
}
},
{
"id": "14",
"type": "therapy",
"name": "asdfasdf",
"pivot": {
"case_id": "1",
"id": "14"
}
}
]
}
序列化器与本次调用无关
App.SpecialtySerializer = DS.JSONSerializer.extend({
primaryKey: 'specialty_id'
});
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api/v1',
headers: function() {
return {
authToken: this.get('auth.authToken')
};
}.property("auth.authToken")
});
【问题讨论】:
-
也许我对您的尝试感到困惑,您是在尝试异步获取标签,还是希望它们与帖子同时下来?
-
以与帖子相同的类型下来。我返回的 json 就像
{post: { ... }} ..... tags: { ... }格式很糟糕,我知道。但本质上,标签在帖子的 json 请求中。 -
你会为上面的帖子和标签显示你的模型定义,并且可能会抛出一个 json 的例子,你说你正在使用 RESTAdapter,这仍然成立吗?
-
是的,我正在使用 RESTAdapter。
-
你正在扩展序列化程序,你能把它包括进来吗?
标签: javascript rest ember.js