我在我的Ember Data应用程序中广泛使用了侧载,以避免多次往返API,直到现在它总是很好用。
我使用的是Ember 1.6.0-beta.3,Ember Data 1.0.0-beta.7,DS.ActiveModelAdapter和DS.ActiveModelSerializer。
如果我保存了导致此请求的Foo模型:
POST /foos
{
"foo": {
"name": "Foo"
}
}
服务器使用创建的Foo进行响应,但也使用侧面加载的Bar来引用新的Foo。
201 Created
{
"foo": {
"id": 1,
"name": "Foo"
},
"bars": {
"id": 1,
"foo_ids": [1]
}
}
在此回复之后,看起来Bar不知道ID = 1的Foo在商店中,并发出以下请求:
GET /foos?ids[]=1
此请求失败,因为我没有该端点。我不希望Ember Data应该发送这个请求,因为我们刚刚加载了ID = 1的Foo。
相反,我希望不应该提出额外的请求。相反,Bar应该与新创建的Foo相关联。
我的期望是否超出预期?这是一个错误吗?
修改
我能够通过显式地加载foo来解决这个问题。这非常不优雅,但是,嘿,这是一种解决方法。
具体来说,我在POST / foos后更改了我的API以响应以下内容:
{
"foo": {
"id": 1,
"name": "Foo"
},
"bars": {
"id": 1,
"foo_ids": [1]
},
"foos": [{
"id": 1,
"name": "Foo"
}]
}
然后侧载的Bar不会尝试加载它的Foo。
我要打开这个,因为解决方法不是解决办法。