首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember-data多词模型字段未正确序列化

Ember-data多词模型字段未正确序列化
EN

Stack Overflow用户
提问于 2014-08-21 03:57:31
回答 1查看 105关注 0票数 1

我在我编写的一些自定义序列化程序代码中看到了一些奇怪的行为。

我在一个资产模型中有一个名为'marketName‘的字段。我的Rails后端希望这个字段被命名为'market_name‘。我已经扩展了ActiveModelSerializer并覆盖了'extractSingle‘和'serialize’方法。

奇怪的是,对于我的Asset模型中不是由多个单词组成的所有其他字段,我编写的序列化代码工作得很好。没有问题。然而,对于任何包含多个单词的字段,序列化不能完全工作,因为它在创建时保存资产-它不能正确地填充资产模型的'marketName‘字段(以及由多个单词组成的任何其他字段)。

例如,如果我检查数据检查器中的'marketName‘字段,它显示为'{}’。如果我将我的资产模型中任何多字字段的名称改为单数(也就是将'marketName‘改为' name '),并相应地更新序列化代码-一切都很好。

知道是怎么回事吗?

谢谢,戴夫

EN

回答 1

Stack Overflow用户

发布于 2014-08-21 23:34:14

在核心团队(参见line 126,下面的incase链接对未来的读者不好)所做的extractSingle()测试中,他们将变量作为super_villains传递,然后ActiveModelSerializer中包含的normalize()为他们将其更改为superVillains

所以我认为在你的extractSingle中,假设这些值还不是camelCase,但仍然是underscore_format (例如,"market_name"),那么你应该是黄金!

代码语言:javascript
复制
test("extractSingle", function() {
  env.container.register('adapter:superVillain', DS.ActiveModelAdapter);

  var json_hash = {
    home_planet:   {id: "1", name: "Umber", super_villain_ids: [1]},
    super_villains:  [{
      id: "1",
      first_name: "Tom",
      last_name: "Dale",
      home_planet_id: "1"
    }]
  };

  var json = env.amsSerializer.extractSingle(env.store, HomePlanet, json_hash);

  deepEqual(json, {
    "id": "1",
    "name": "Umber",
    "superVillains": [1]
  });

  env.store.find("superVillain", 1).then(async(function(minion){
    equal(minion.get('firstName'), "Tom");
  }));
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25413379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档