所以我(我认为)是Ember-data的一般问题.我想知道如何正确定制适配器以适应以下情况.
假装我有两个对象:Post
和Tag
App.Post.find()
通过GET
ing 调用返回所有帖子api.com/posts
,App.Post.find(1)
可在以下位置找到api.com/posts/1
.这很好.
App.Tag.find()
将返回所有可用的标签api.com/tags
.App.Tag.find(1)
将在正确的URL返回相应的标记.也不错.
如果我通过App.Post.createRecord({...})
它创建新帖子将POST
到正确的URL.创造也是如此Tags
.到目前为止,一切都很花花公子.
Tags
在Post
被嵌入,因为他们是"上"这个职务.
App.Adapter.map("App.Post", {
tags: {embedded: 'always'}
});
Run Code Online (Sandbox Code Playgroud)
在加载过程中,Ember-data做的一切正常,我仍然非常高兴.
所以我的问题来自于添加Tag
一个Post
.我想PUT
或POST
标签对象到api.com/posts/1/tags
服务器将执行所有服务器端的事情.
目前,
带有{embedded: 'always'}
配置集的Ember-data 将发送包含整个对象(包含新对象)的PUT
to 作为JSON字符串化字符串.api.com/posts/1
Post
Tag
如果没有{embedded: 'always'}
配置集,ember-data将尝试PUT
使用标记对象,api.com/tags
并将Tag
使用post_id
参数发送对象,以便服务器端可以执行所有服务器端的操作.
我宁愿不做1,因为我的服务器没有这样设置.我宁愿不做2,因为PUT/POST/GET
s api.com/tags
应该真的应用于我的应用程序的"标签管理"部分,而不是真正将标签应用于帖子.此行为的另一个示例是 …