在ember-cli-mirage中生成一个staffMember的实例时,我正在尝试创建一个“任务”并将其分配给staffMember模型中的“tasksCreated”键。我目前的代码如下;
它正在创建一个任务,并创建一个staffMember,但两者之间没有建立任何关系。
应用程序/模型/人员-member.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
atWork: DS.attr('boolean'),
avatar: DS.attr(),
tasksCreated: DS.hasMany('task', {
inverse: 'creator'
}),
tasksAssigned: DS.hasMany('task', {
inverse: 'assignee'
})
});
应用程序/模型/ tasks.js
import DS from 'ember-data';
export default DS.Model.extend({
creator: DS.belongsTo('staff-member', { inverse: null }),
assignee: DS.belongsTo('staff-member', { inverse: null }),
creationDate: DS.attr(),
description: DS.attr('string'),
urgency: DS.attr()
});
蜃/模型/人员-member.js
import {Model, hasMany} from 'ember-cli-mirage';
export default Model.extend({
tasksCreated: hasMany('task'),
tasksAssigned: hasMany('task', { inverse: 'assignee'})
});
蜃/模型/ task.js
import {Model, belongsTo} from 'ember-cli-mirage';
export default Model.extend({
creator: belongsTo('staff-member'),
assignee: belongsTo('staff-member')
});
蜃/工厂/人员-member.js
import { Factory, faker, trait } from 'ember-cli-mirage';
export default Factory.extend({
name: faker.name.firstName,
atWork: faker.random.boolean,
avatar: faker.image.avatar,
withTasks: trait({
afterCreate(staffMember, server){
server.createList('task',2,{tasksCreated: [staffMember]});
}
})
});
蜃/工厂/ task.js
import { Factory, faker } from 'ember-cli-mirage';
export default Factory.extend({
creationDate: faker.date.recent,
description: faker.lorem.sentence,
urgency: faker.random.number({
'min': 0,
'max': 4
})
});
蜃/场景/ default.js
export default function(server ) {
server.createList('staff-member', 4, 'withTasks');
}
答案 0 :(得分:0)
我尝试删除大部分与设置关系无直接关系的代码。在摆弄工厂之前,尽量让关系在默认情况下工作。
我在这里做了一个工作:https://ember-twiddle.com/5bcdcdee50faa0c0a679c3c4d35fe0ea?openFiles=mirage.scenarios.default.js%2C
这是默认情况的样子:
export default function(server ) {
let member1 = server.create('staff-member');
server.createList('task', 2, { creator: member1 });
server.create('task', { assignee: member1 });
let member2 = server.create('staff-member');
server.create('task', { creator: member2 });
server.createList('task', 3, { assignee: member2 });
}
就您的工厂afterCreate
代码而言,此行中有一个错误
server.createList('task',2,{tasksCreated: [staffMember]});
您正在创建task
,但是将tasksCreated
作为该任务的属性传递。但是任务没有具有任务处理的财产,员工会这样做。也许这就是你正在寻找的东西:
server.createList('task', 2, { creator: staffMember });