【问题标题】:Serialize JSON into Ember-Data (two different models in payload)将 JSON 序列化为 Ember-Data(有效负载中的两种不同模型)
【发布时间】:2015-04-13 11:26:45
【问题描述】:

我有来自服务器的 JSON,看起来像:

data: {
       user: {
              address: {
                         id: "id",
                         city: "city",
                         street: "street",
                         .......
              }
              name: "name",
              ......
       }

       authentication: {
                         token: "token",
                         id: "id"
       }
}

在 Ember 中,我有一个模型 auth,它应该代表我从服务器获得的 authentication 模型。由于我在服务器和 Ember 商店中对同一模型有不同的名称,因此我编写了一个带有一种方法 typeForRoot(root) 的序列化程序,其中我只是将服务器 authentication 映射到 Ember auth。 问题是这个 typeForRoot 实际上从未被调用过,我也不知道为什么。

这是 Ember 身份验证模型:

import DS from 'ember-data';

export default DS.Model.extend({
    token: DS.attr('string')

});

这是我的序列化器:

import DS from 'ember-data';
import Ember from 'ember';

export default DS.RESTSerializer.extend({

  typeForRoot: function(root) {
    // 'authentication' should become 'auth'
    var subRoot = root.substring(0, root.length - 10);

    // _super normalizes 'authentication' to 'auth'
    return this._super(subRoot);
  }
});

我的 user 模型已正确保存在商店中(我正在为用户使用单独的、基于模型的序列化程序),但是当 authenticationWARNING: Encountered "authentication" in payload, but no model was found for model name "authentication" (resolved model name using shop-app@serializer:user:.typeForRoot("authentication")) /strong>模型需要保存在商店的auth模型中。

有谁知道我该如何克服这个问题。 谢谢, 米兰

【问题讨论】:

  • 能否提供文件名?
  • 附注:_super 在这种情况下将“auth”“规范化”为“auth”。
  • 文件名:Ember 认证模型:auth.js 序列化器:application.js
  • 好的,因为它是应用程序序列化程序,我希望它能够将“用户”“翻译”为“”,这可能会导致错误。如果您将此代码放在auth 序列化程序中会发生什么(即重命名文件)?
  • 我有一个单独的序列化器供用户使用,如果我把这段代码从应用序列化器放入一个授权序列化器,结果和我上面描述的一样。

标签: ember.js ember-data


【解决方案1】:

我假设您实现的typeForRoot 位于身份验证序列化程序上?如果您注意到错误,它会指出:

shop-app@serializer:user:.typeForRoot("authentication")

这特别指向 User 序列化器。

我假设您正在对 User 模型进行请求,该模型在数据中返回 User 模型和 Auth 模型 - 因为您使用 User 适配器和 Serialiser 来执行此操作,所以您需要实现 typeForRoot 逻辑用户序列化程序。

【讨论】:

  • 我离开了 ember-data。感谢敌人的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多