2016-09-30 2 views
0

ember-cli-mirage 내에 staffMember의 인스턴스를 생성하는 동안 '작업'을 만들고 'tasksCreated'키에 할당하려고합니다. staffMember 모델 내에서. 현재 코드는 다음과 같습니다.모델 인스턴스를 생성하고 Ember Mirage의 특정 키에 적용하는 데 문제가 발생했습니다.

이것은 작업을 생성하고 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'}) 
}); 

mirage/models/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 
    }) 
}); 

신기루/시나리오/I가 시도

export default function(server) { 

    server.createList('staff-member', 4, 'withTasks'); 

} 

답변

0

default.js 관계를 설정하는 것과 직접 관련이없는 대부분의 코드를 제거하십시오. 공장을 만지기 전에 기본 시나리오에서만 관계를 유지하십시오.

내가 작업이 여기에 떨림했습니다

: 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을 전달합니다. 그러나 tasks에는 staffCreated 속성이 없으므로 staffMembers가 수행합니다. 아마도 다음과 같은 것일 수 있습니다.

server.createList('task', 2, { creator: staffMember });