所以我遇到了(我认为是)一个关于 Ember 数据的一般问题。我想知道如何正确自定义适配器以适应以下情况。
假装我有两个对象:Post
和Tag
调用通过ingApp.Post.find()
返回所有帖子,位于。这很好。GET
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
到正确的网址。创建Tags
. 到目前为止,一切都是花花公子。
Tags
on aPost
是嵌入的,因为它们在那个帖子上。
App.Adapter.map("App.Post", {
tags: {embedded: 'always'}
});
在加载期间,Ember-data 一切正常,我仍然非常高兴。
所以我的问题来自将 a 添加Tag
到 a Post
。我想PUT
或POST
标签对象到api.com/posts/1/tags
服务器将在其中执行所有服务器端的事情。
目前,
带有配置集的 Ember-data
{embedded: 'always'}
会将整个对象(包括新对象)作为 JSON 字符串化字符串发送PUT
到。api.com/posts/1
Post
Tag
如果没有
{embedded: 'always'}
配置集,ember-data 将尝试PUT
标记对象api.com/tags
并发送Tag
带有post_id
参数的对象,以便服务器端可以做所有服务器端的事情。
我宁愿不做 1 因为我的服务器不是这样设置的。我宁愿不做 2 因为PUT/POST/GET
s onapi.com/tags
真的应该是我的应用程序的“标签管理”部分,而不是真正将标签应用于帖子。这种行为的另一个例子是在Github v3 API for Labels & Issues中。
有谁知道用 ember-data 处理这个问题的方法?谢谢!