[英]Ember CLI Mirage: 2 level sideloaded response
我在建模这种关系时遇到了一些困难。 有人可以帮忙吗?
租户有一个应用程序
应用具有品牌
最大的难题是侧面加载有2个级别。 我当前的API返回如下响应:
{
"tenants": [
{
"app_id": "app_001",
"id": 1,
"name": "Illya_no_delete",
}
],
"app": [
{
"brand_id": "brand_001",
"id": "app_001",
"name": "updated test client 2 name",
}
],
"brands": [
{
"id": "brand_001",
"app_id": "app_001"
}
]
}
我将模型设置为:
// models/tenant.js
export default Model.extend({
app: belongsTo('app'),
});
// mirage/models/app.js
export default Model.extend({
brand: belongsTo('brand'),
tenant: belongsTo('tenant')
});
// mirage/models/brand.js
export default Model.extend({
app: belongsTo('app')
});
我将序列化器设置为:
// mirage/serializers/app.js
export default ApplicationSerializer.extend({
include: ['brand']
});
// mirage/serializers/tenant.js
export default ApplicationSerializer.extend({
include: ['app']
});
我将场景设置为:
// mirage/scenarios/default.js
let brand = server.create('brand');
let app = server.create('app', {brand: brand});
server.createList('tenant', 10, {app: app});
不幸的是,我生成的响应未返回侧面加载的品牌对象。 我看到了所有其他对象:
{
tenant: {
id: 1,
app_id: 2
},
apps: [
{
id: 2,
brand_id: null,
tenant_id: 1
}
]
}
关于我需要做些什么来获得“品牌”的任何建议?
对于任何有兴趣的人,以下是根据Sam Selikoff的评论为我工作的解决方案。 公开反馈:
楷模:
// models/tenant.js
export default Model.extend({
app: belongsTo('app'),
brand: belongsTo('brand'),
});
// mirage/models/app.js
export default Model.extend({
tenant: belongsTo('tenant')
});
// mirage/models/brand.js
export default Model.extend({
});
序列化器:
// mirage/serializers/tenant.js
export default ApplicationSerializer.extend({
include: ['app', 'brand'],
serialize() {
let json = ApplicationSerializer.prototype.serialize.apply(this, arguments);
if (json.brands.length > 0) {
let brandId = json.brands[0].id;
json.applications[0].brand_id = brandId;
}
return json;
}
});
默认方案:
// mirage/scenarios/default.js
let brand = server.create('brand');
let app = server.create('app');
server.createList('tenant', 10, {app: app, brand: brand});
响应:
{
tenant: {
id: 1,
app_id: 2
},
apps: [
{
id: 2,
brand_id: 3,
tenant_id: 1
}
],
brand: [
{
id: 3
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.