【问题标题】:Sideloaded Embedded Records in Ember not triggering the correct serializerEmber 中旁加载的嵌入式记录未触发正确的序列化程序
【发布时间】:2014-02-13 00:55:14
【问题描述】:

问题是我们在 mongo 数据库中使用嵌入的记录,并试图在前端的 ember.js 数据存储中加载相同的记录。这在我们直接加载文档时可以正常工作,但在我们旁加载时不行。

在 ember 端我们有相应的模型和以下支持嵌入记录

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

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

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

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

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我通过从序列化程序的extract 方法手动调用侧载类型的序列化程序来使其工作。

    例如,我有一个侧载帐户的用户。在用户序列化程序中,我创建了一个帐户序列化程序并调用它的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);
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多