我目前正在为使用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”
幻影响应改为 “文书工作产品”。
我编辑了我的主帖。我添加了其他细节。感谢您的回答。 – Seybol