首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得与Ember Mirage的关系

无法获得与Ember Mirage的关系
EN

Stack Overflow用户
提问于 2017-10-18 00:35:39
回答 1查看 600关注 0票数 1

我目前正在为我的用EmberJS编写的应用程序编写测试。我用的是幻影。我有以下两个模型:

幻影/模型/文件.js

代码语言:javascript
复制
export default Model.extend({
customer: belongsTo('customer'),
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }),

幻影/模型/书面工作-product.js

代码语言:javascript
复制
export default Model.extend({
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }),
});

在我的场景中,我像这样创建数据:

代码语言:javascript
复制
const paperwork = server.create('paperwork');                                                                                   
const paperworkProduct = server.create('paperwork-product', { paperwork });                      
paperwork.paperwork_products.add(paperworkProduct);

我的路线:

代码语言:javascript
复制
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“也存在。但是我无法在我的模板中获取paperwork_products数据。我做错了什么?我想我必须改变我的一些东西:

代码语言:javascript
复制
this.get('v1/paperworks/:id');

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

编辑:以下是我真实的Ember模型:

模型/models work.js

代码语言:javascript
复制
export default DS.Model.extend({
    customer: DS.belongsTo('customer'),
    paperwork_products: DS.hasMany('paperwork-product', { async: true }),
});

模型/书面工作-product.js

代码语言:javascript
复制
export default DS.Model.extend({
  paperwork: DS.belongsTo('paperwork'),
});

因此,使用下划线的关系或使用破折号的模型存在问题...在config.js中,我尝试模拟JSONAPI后端,它工作得很好。刚把“书面工作-产品”换成了"paperwork_products“

幻影回应:

代码语言:javascript
复制
"relationships":{  
    "customer":{  
        "data":{  
            "type":"customers",
            "id":"1"
        }
    },
    "paperwork-products":{  
        "data":[  
            {  
                "type":"paperwork-products",
                "id":"1"
            }
        ]
    }
}

应该是:

代码语言:javascript
复制
"relationships":{  
    "customer":{  
        "data":{  
            "type":"customers",
            "id":"1"
        }
    },
    "paperwork_products":{  
        "data":[  
            {  
                "type":"paperwork_products",
                "id":"1"
            }
        ]
    }
}

我的其他具有hasMany关系的模型没有任何问题。

EN

回答 1

Stack Overflow用户

发布于 2017-10-19 10:37:19

为了确认,您是否设置了具有相同关系的Ember数据模型?如果没有这些,事情可能会发生。它工作得很好..。

如果你这样做了,你能把这些模型也贴出来吗?

此外,作为一个供参考,幻影0.3.0带有一个自动同步设置,将读取您的Ember数据模型,并创建相应的幻影模型,而不需要任何工作。真是太好了。

编辑:我建议你修改你的Ember数据模型,使用驼峰大小写的关系。如果您执行以下操作:

模型/models work.js

代码语言:javascript
复制
export default DS.Model.extend({
    customer: DS.belongsTo('customer'),
    paperworkProducts: DS.hasMany('paperwork-product', { async: true }),
});

我希望它能正常工作,因为Ember Data会自动将camelCased关系转换为适当的JSON-API键

这对你有效吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46795044

复制
相关文章

相似问题

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