Ember.js 在store pushPayload调用后返回记录
调用Ember.js 在store pushPayload调用后返回记录,ember.js,ember-data,Ember.js,Ember Data,调用DS.Store#pushPayload后,是否有更好的方法返回记录?这就是我正在做的 var payload = { id: 1, title: "Example" } store.pushPayload('post', payload); return store.getById('post', payload.id); 但是,使用常规的DS.Store#push可以返回插入的记录。据我所知,这两者之间的唯一区别是DS.Store#pushPayload使用正确的序列化程序序列化有效负
DS.Store#pushPayload
后,是否有更好的方法返回记录?这就是我正在做的
var payload = { id: 1, title: "Example" }
store.pushPayload('post', payload);
return store.getById('post', payload.id);
但是,使用常规的DS.Store#push
可以返回插入的记录。据我所知,这两者之间的唯一区别是DS.Store#pushPayload
使用正确的序列化程序序列化有效负载数据。DS.Store#pushPayload
能够获取一个项目数组,而不仅仅是一个,并且可能包含侧面加载的数据。它处理完整的负载,并期望负载中有根密钥:
{
"posts": [{
"id": 1,
"title": "title",
"comments": [1]
}],
"comments": [
//.. and so on ...
]
}
DS.Store#push
需要一条已规范化且不包含侧面加载数据的记录(注意没有根键):
因此,push
返回记录是有意义的,但是pushPayload
不返回任何内容
使用pushPayload
时,第二次查找store.find('post',1)
(或store.getById('post',1)
)是最好的方法,我认为没有更好的方法了。从pushPayload
开始,现在可以返回推送到存储中的所有记录的数组,一旦启用了“ds-pushpayload-return”
目前,此功能在标准版或beta版中都不可用,您必须使用
"ember-data": "emberjs/data#master",
(即金丝雀)在您的
package.json
中,以便访问它。我不确定该功能何时能普遍使用。是的,我在查看余烬数据代码时就是这么想的。谢谢
"ember-data": "emberjs/data#master",