无法与Ember Mirage建立关系
我目前正在为使用EmberJS编写的应用程序编写测试。我正在使用Mirage。 我有两个以下型号:无法与Ember Mirage建立关系
海市蜃楼/模型/ paperwork.js
export default Model.extend({
customer: belongsTo('customer'),
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }),
海市蜃楼/模型/文书工作product.js
export default Model.extend({
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }),
});
我的方案,我创建我DATAS是这样的:
const paperwork = server.create('paperwork');
const paperworkProduct = server.create('paperwork-product', { paperwork });
paperwork.paperwork_products.add(paperworkProduct);
我的路线:
export default ApplicationRoute.extend({
model(params) {
return this.store.findRecord('paperwork', params.paperwork_id, { include: 'paperwork_products' }),
},
});
问题是我无法访问我的模板中的paperwork.paperwork_products。它没有定义(其他文书工作属性在这里,但不是关系)。在声明路由时,我甚至已经尝试在我的mirage/config.js中放置一个调试器。我的文书工作和他的“文书工作产品”也存在。但我无法在我的模板中获取paperwork_products数据。 我在做什么错?我想,我必须在我改变的东西:
this.get('v1/paperworks/:id');
但我不知道是什么... 提前感谢!
编辑:这是我真正的灰烬型号:
型号/ paperwork.js
export default DS.Model.extend({
customer: DS.belongsTo('customer'),
paperwork_products: DS.hasMany('paperwork-product', { async: true }),
});
型号/文书工作product.js
export default DS.Model.extend({
paperwork: DS.belongsTo('paperwork'),
});
昨天我试图以比较真实的JsonApi回应我的回应,以及Mirage的回应,并且我看到在关系散列中,我的关系“paperwork_products”被更改为文书工作产品(与Mirage)。因此,与下划线或带有短划线的模型之间的关系存在问题... 在config.js中,我尝试模拟JSONAPI后端,并且它可以很好地工作。
"relationships":{
"customer":{
"data":{
"type":"customers",
"id":"1"
}
},
"paperwork-products":{
"data":[
{
"type":"paperwork-products",
"id":"1"
}
]
}
}
应该是::
"relationships":{
"customer":{
"data":{
"type":"customers",
"id":"1"
}
},
"paperwork_products":{
"data":[
{
"type":"paperwork_products",
"id":"1"
}
]
}
}
我的其他型号的hasMany关系没有任何问题,只是 “paperwork_products”
幻影响应改为 “文书工作产品”。
要确认,您是否安装了具有相同关系的Ember Data模型?没有这些,事情可能会。它工作得很好...
如果你这样做,你可以发布这些模型吗?此外,作为参考,Mirage 0.3.0带有一个自动同步设置,可以读取您的Ember数据模型并创建相应的Mirage模型,而无需任何工作。这是可爱的...
编辑: 我建议你重做你的Ember数据模型,以使用驼峰关系。如果你做到以下几点:
型号/ paperwork.js
export default DS.Model.extend({
customer: DS.belongsTo('customer'),
paperworkProducts: DS.hasMany('paperwork-product', { async: true }),
});
我希望它没有问题的工作,为灰烬数据自动转换为相应的JSON-API密钥
驼峰是否关系为你工作?
我编辑了我的主帖。我添加了其他细节。感谢您的回答。 – Seybol