首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成模型实例并将其应用于Ember Mirage中的特定键时出现问题

生成模型实例并将其应用于Ember Mirage中的特定键时出现问题
EN

Stack Overflow用户
提问于 2016-09-30 23:42:11
回答 1查看 225关注 0票数 0

当在ember-cli-mirage中生成staffMember的实例时,我尝试创建一个“任务”,并将其分配给staffMember模型中的键“tasksCreated”。我当前的代码如下;

它创建了一个任务,并创建了一个staffMember,但这两者之间并没有建立任何关系。

app/models/staff-ember.js

代码语言:javascript
复制
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'
    })
});

app/model/tasks.js

代码语言:javascript
复制
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()
 });

mirage/models/staff-member.js

代码语言:javascript
复制
import {Model, hasMany} from 'ember-cli-mirage';

export default Model.extend({
    tasksCreated: hasMany('task'),
    tasksAssigned: hasMany('task', { inverse: 'assignee'})
});

幻影/models/task.js

代码语言:javascript
复制
import {Model, belongsTo} from 'ember-cli-mirage';

export default Model.extend({
    creator: belongsTo('staff-member'),
    assignee: belongsTo('staff-member')
});

幻影/工厂/员工-成员.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
export default function(server ) {  

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

}
EN

回答 1

Stack Overflow用户

发布于 2016-10-01 22:58:14

我试着删除大多数与建立关系没有直接关系的代码。在摆弄工厂之前,请尝试让关系只在默认情况下工作。

我在这里做了一个有效的操作:https://ember-twiddle.com/5bcdcdee50faa0c0a679c3c4d35fe0ea?openFiles=mirage.scenarios.default.js%2C

以下是默认场景:

代码语言:javascript
复制
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代码而言,该行中有一个错误

代码语言:javascript
复制
server.createList('task',2,{tasksCreated: [staffMember]});

您正在创建一个task,但是将tasksCreated作为该任务的一个属性传入。但是任务没有tasksCreated属性,而staffMembers有。也许这就是你要找的东西:

代码语言:javascript
复制
server.createList('task', 2, { creator: staffMember });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39795271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档