Ember中的Sideloaded Embedded Records不会触发正确的序列化程序

时间:2014-02-13 00:55:14

标签: ember.js ember-data

问题是我们在mongo数据库中使用嵌入式记录,并尝试在前端的ember.js数据存储区中加载这些相同的记录。这在我们直接加载文档时工作正常,但在我们加载它时却没有。

在余烬方面,我们有相应的模型和以下内容来支持嵌入式记录

App.RateSerializer = App.ApplicationSerializer.extend( DS.EmbeddedRecordsMixin, {
    attrs: {
      tiers: { embedded: 'always' }
    },
});

现在每次我们直接加载速率对象时,嵌入的层都会正确序列化,这很棒!除了,为了加快应用程序,我们想要加载费率。

现在我们的问题是,当我们侧载对象时,所有嵌入对象都没有正确序列化,因为ember没有调用extractArray覆盖RateSerializer覆盖的ApplicationSerializer函数。

在加载时设置每类型序列化程序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我通过从序列化程序的extract方法手动调用sideloaded类型的序列化程序来实现它。

例如,我有一个负载帐户的用户。在用户序列化程序中,我创建了一个帐户序列化程序并调用其normalizePayload

extract: function(store, type, payload, id, requestType) {
    if (payload.accounts) {  // has sideloaded account data
        payload = AccountSerializer.create().normalizePayload(payload);
    }
    return this._super(store, type, payload, id, requestType);
},