ember.js - 存储 pushPayload 调用后返回记录

标签 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能够获取一组项目,而不仅仅是一个项目,并且可能包含侧载数据。它处理完整的有效负载并期望有效负载中的根 key :

{
  "posts": [{
    "id": 1,
    "title": "title",
    "comments": [1]
  }],
  "comments": [
    //.. and so on ...
  ]
}
DS.Store#push期望一个已规范化且不包含侧面加载数据的记录(注意没有根键):
{
  "id": 1,
  "title": "title",
  "comments": [1]
}

出于这个原因,push 是有意义的。返回记录,但对于 pushPayload什么都不回。

当您使用 pushPayload ,第二次查找 store.find('post', 1) (或 store.getById('post', 1) )是要走的路,我不相信有更好的方法。

关于ember.js - 存储 pushPayload 调用后返回记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210469/

相关文章:

javascript - 在 ember.js 中,处理表单提交和保存记录的逻辑应该驻留在哪一层?

ember.js - 在 ember-cli 应用程序中哪里添加 css 和 js 文件?

javascript - 具有嵌入式 hasMay 关系的 EmberJS RESTSerializer

javascript - Ember-Data:DS.EmbeddedRecordsMixin 的预期使用模式

ember.js - 过滤 Ember ArrayProxy

Ember.js 绑定(bind)数组元素来查看

javascript - Mirage 的简单 Ember 数据问题(错误 : Encountered a resource object with an undefined type )

javascript - 我希望我的操作能够更改它所附加的 DOM 元素

ember.js - 模型 Hook 中的 params 为空,但 paramsFor 不为空

google-chrome - Chrome 中的 iframe 错误 : Failed to read 'localStorage' from 'Window' : Access denied for this document