2017-10-17 202 views
1

我目前正在为使用EmberJS编写的应用程序编写测试。我正在使用Mirage。 我有两个以下型号:无法与Ember Mirage建立关系

海市蜃楼/模型/ paperwork.js

export default Model.extend({ 
customer: belongsTo('customer'), 
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }), 

海市蜃楼/模型/文书工作product.js

export default Model.extend({ 
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }), 
}); 

我的方案,我创建我DATAS是这样的:

const paperwork = server.create('paperwork');                     
const paperworkProduct = server.create('paperwork-product', { paperwork });      
paperwork.paperwork_products.add(paperworkProduct); 

我的路线:

export default ApplicationRoute.extend({ 
    model(params) { 
     return this.store.findRecord('paperwork', params.paperwork_id, { include: 'paperwork_products' }),   
    }, 
}); 

问题是我无法访问我的模板中的paperwork.paperwork_products。它没有定义(其他文书工作属性在这里,但不是关系)。在声明路由时,我甚至已经尝试在我的mirage/config.js中放置一个调试器。我的文书工作和他的“文书工作产品”也存在。但我无法在我的模板中获取paperwork_products数据。 我在做什么错?我想,我必须在我改变的东西:

this.get('v1/paperworks/:id'); 

但我不知道是什么... 提前感谢!

编辑:这是我真正的灰烬型号:

型号/ paperwork.js

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperwork_products: DS.hasMany('paperwork-product', { async: true }), 
}); 

型号/文书工作product.js

export default DS.Model.extend({ 
    paperwork: DS.belongsTo('paperwork'), 
}); 

昨天我试图以比较真实的JsonApi回应我的回应,以及Mirage的回应,并且我看到在关系散列中,我的关系“paperwork_products”被更改为文书工作产品(与Mirage)。因此,与下划线或带有短划线的模型之间的关系存在问题... 在config.js中,我尝试模拟JSONAPI后端,并且它可以很好地工作。

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork-products":{ 
     "data":[ 
      { 
       "type":"paperwork-products", 
       "id":"1" 
      } 
     ] 
    } 
} 

应该是::

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork_products":{ 
     "data":[ 
      { 
       "type":"paperwork_products", 
       "id":"1" 
      } 
     ] 
    } 
} 

我的其他型号的hasMany关系没有任何问题,只是 “paperwork_products”

幻影响应改为 “文书工作产品”。

回答

0

要确认,您是否安装了具有相同关系的Ember Data模型?没有这些,事情可能会。它工作得很好...

如果你这样做,你可以发布这些模型吗?此外,作为参考,Mirage 0.3.0带有一个自动同步设置,可以读取您的Ember数据模型并创建相应的Mirage模型,而无需任何工作。这是可爱的...

编辑: 我建议你重做你的Ember数据模型,以使用驼峰关系。如果你做到以下几点:

型号/ paperwork.js

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperworkProducts: DS.hasMany('paperwork-product', { async: true }), 
}); 

我希望它没有问题的工作,为灰烬数据自动转换为相应的JSON-API密钥

驼峰是否关系为你工作?

+0

我编辑了我的主帖。我添加了其他细节。感谢您的回答。 – Seybol