Ember CLI Mirage:2 级旁加载响应
Ember CLI Mirage: 2 level sideloaded response
我在为这种关系建模时遇到了一些困难。有人可以帮忙吗?
A Tenant has an App
An App has a Brand
最大的问题是 2 级侧面加载。我目前APIreturn的回复如下:
{
"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});
不幸的是,我生成的响应不是 return 侧面加载的品牌对象。我看到了我的所有其他对象:
{
tenant: {
id: 1,
app_id: 2
},
apps: [
{
id: 2,
brand_id: null,
tenant_id: 1
}
]
}
有什么建议可以让 'brands' 出现吗?
对于任何感兴趣的人,这是一个基于 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
}
]
}
我在为这种关系建模时遇到了一些困难。有人可以帮忙吗?
A Tenant has an App
An App has a Brand
最大的问题是 2 级侧面加载。我目前APIreturn的回复如下:
{
"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});
不幸的是,我生成的响应不是 return 侧面加载的品牌对象。我看到了我的所有其他对象:
{
tenant: {
id: 1,
app_id: 2
},
apps: [
{
id: 2,
brand_id: null,
tenant_id: 1
}
]
}
有什么建议可以让 'brands' 出现吗?
对于任何感兴趣的人,这是一个基于 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
}
]
}