如何克隆余烬对象

时间:2018-08-31 03:15:14

标签: javascript ember.js

我有一个名为“用户”的模型,如下所示:

export default DS.Model.extend({
   name: DS.attr('string'),
   bankAccounts: DS.attr()
})

在应用程序内,当用户转到结束页面并点击完成时,bankAccouunts属性设置为一组看起来像这样的银行帐户

 bankAccount {
   bankName:
   address:
   accountInfo: [] (again an array)
   membersInfo: [{Object1}, {Object2}] (array with json objects)
}

现在,当我创建用户模型并执行_model.save()然后按照适配器createRecord方法进行操作时,它不会序列化内部属性(通过序列化,我的意思是将camelCase转换为snakeCase,例如:bankAccounts将被转换到bank_accounts。)

现在的问题是:

是否也可以序列化内部属性? (比如我想将membersInfo序列化为member_info)

我希望这可以澄清我的疑问,如果不是这样,我很乐意再次编辑并寻求帮助。

2 个答案:

答案 0 :(得分:2)

可能您应该写一个custom transform。然后您可以像这样使用它:

bankAccounts: DS.attr('my-transform')

ember string functions like dasherize可能对此非常有用。

答案 1 :(得分:2)

通常,我建议将bankAccounts建模为userbank-account模型之间的多对多关系。否则,如果不更新用户模式并替换所有银行帐户,就无法更新特定的银行帐户。此外,由于没有ID,因此无法使用特定的银行帐户进行导航。灰烬数据具有powerful relationship support。在这种情况下,属性的序列化不会有问题,因为它是另一个具有完全功能的Serializer的模型。

如果由于某种原因您不想拥有单独的银行帐户模型并使用一对多关系,则有两种选择: