Javascript 余烬数据未正确序列化数组中对象的属性名称
我有一个简单的(针对这个问题)模型,它有一个名为electricGuitars的属性,预定义了一些默认值Javascript 余烬数据未正确序列化数组中对象的属性名称,javascript,ecmascript-6,ember.js,ember-data,Javascript,Ecmascript 6,Ember.js,Ember Data,我有一个简单的(针对这个问题)模型,它有一个名为electricGuitars的属性,预定义了一些默认值 export default class guitarCollectionModel extends Model { @attr('string') firstName; @attr('string') lastName; @attr({ defaultValue() { return [ { serialNumber:
export default class guitarCollectionModel extends Model {
@attr('string') firstName;
@attr('string') lastName;
@attr({
defaultValue() {
return [
{
serialNumber: "sdfdsfadf",
colorCode: "dsfsadfdfa"
},
{
serialNumber: "234234234",
colorCode: "234234234323"
},
{
serialNumber: "oorprpprprpororprp",
colorCode: "rproproroprporp"
}
];
}
}) electricGuitars;
}
当我保存模型(this.model.save()
)时,会将成员数据发布到我的API中,默认情况下几乎所有内容都已正确序列化(没有自定义序列化程序或ADPATER)。API希望所有属性名都被Dasherise化
{
"data": {
"attributes": {
"first-name": null,
"last-name": null,
"electric-guitars": [
{
"serialNumber": "sdfdsfadf",
"colorCode": "dsfsadfdfa"
},
{
"serialNumber": "234234234",
"colorCode": "234234234323"
},
{
"serialNumber": "oorprpprprpororprp",
"colorCode": "rproproroprporp"
}
]
},
"type": "guitar-collection"
}
}
问题在于,electricGuitars
属性/数组中的serialNumber
和colorCode
属性未被dasherise化
{
"data": {
"attributes": {
"first-name": null,
"last-name": null,
"electric-guitars": [
{
"serialNumber": "sdfdsfadf",
"colorCode": "dsfsadfdfa"
},
{
"serialNumber": "234234234",
"colorCode": "234234234323"
},
{
"serialNumber": "oorprpprprpororprp",
"colorCode": "rproproroprporp"
}
]
},
"type": "guitar-collection"
}
}
有没有一种简单的方法可以实现这一点?虽然JSON:API可以将任何有效的JSON作为属性值,但Ember数据序列化器不适用于嵌套的复杂对象。您可能会发现这是有用的,或者。当JSON:API将任何有效的JSON作为属性值时,Ember数据序列化器不适用于嵌套的复杂对象。您可能会发现这很有用,或者。一个选项是编写自定义。在
序列化
函数中,您可以dasherize:
序列化(反序列化){
返回Object.fromEntries(Object.entries(反序列化)
.map(([key,val])=>[dasherize(key,val]))
)
}
然后指定自定义变换:
@attr('my-custom-transform', {
一种选择是编写一个自定义的。在
序列化
函数中,您可以dasherize:
序列化(反序列化){
返回Object.fromEntries(Object.entries(反序列化)
.map(([key,val])=>[dasherize(key,val]))
)
}
然后指定自定义变换:
@attr('my-custom-transform', {