在sequelize中重命名外键关联

时间:2017-01-14 19:08:05

标签: node.js sequelize.js

这个项目使用sqlite和sequelize。我习惯了普通的sql,但这种方法对于在Node.js中创建API非常有用。

我有两个模型:用户和组。一个小组有很多用户,但其中一个是老师。我有一个单独的UserInGroup表来处理多对多关系,但对于教师的一对多关系,我已经重命名了关系'teacher'(所以属性是teacherId)。

db.group.belongsTo(db.user, {as: 'teacher'});   
db.user.hasMany(db.group, {as: 'teacher'});

当我登录并尝试创建组对象时,它会尝试创建一个显然不存在的userId字段。如何将userId放在teacherId字段中?

app.post('/groups', middleware.requireAuthentication, function(request, response){

    var body = _.pick(request.body, 'name', 'description');
    body.description = body.description.trim();
    body.name = body.name.trim();

    db.group.create(body).then(function(group){              
        request.user.addGroup(group).then(function(){
            return group.reload();
        }).then(function(group){
            response.json(group.toJSON())   
        })
    }, function (e) {                                   
        response.status(400).json(e);
    })
});

我不想简单地重命名该字段,因为我还将管理一个“消息”对象,该对象需要为发件人和收件人提供两个userId。我已经定义了db.js中的所有字段,但我不确定如何填充它们。

2 个答案:

答案 0 :(得分:1)

db.group.belongsTo(db.user, {as: 'teacher',foreignKey: 'teacherId'});   
db.user.hasMany(db.group, {as: 'teacher',foreignKey: 'teacherId'});

参考:http://docs.sequelizejs.com/en/latest/docs/associations/

答案 1 :(得分:0)

就我而言,try this: @Component @Slf4j public class CustomWebFilter implements WebFilter, Ordered { @Value("${ss.apigateway.context.path}") private String contextPath; @Override public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) { String path = serverWebExchange.getRequest().getURI().getPath(). replace(contextPath, ""); log.debug("Old Path: '{}', Modified Path: '{}'", serverWebExchange.getRequest().getURI().getPath(), path); ServerHttpRequest updatedHttpRequest = serverWebExchange.getRequest().mutate().path(path).build(); return webFilterChain.filter(serverWebExchange.mutate().request(updatedHttpRequest).build()); } @Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } } Businesscategory 模型有关系 表。

实际表名是

BusinessProduct = Businesscategory 还有
businesscategories = BusinessProduct

现在关系 business_products 应该在 BusinessProduct.businesscategory_id 表内,但我用 BusinessProduct

更改该字段

所以现在我面临以下错误

product_category_id

所以我使用以下代码来解决这个问题。 它对我有用。

Unknown column 'BusinessProducts.businesscategory_id' in 'on clause'