在Sails中强制收集关系的数据库表名

时间:2017-04-27 21:35:57

标签: node.js sails.js waterline

在sails项目中,考虑模型User和模型Role,以及用户和角色之间的关系:

// `User.js
module.exports = {

    attributes: {

        ...

        roles: {
            collection: 'role',
            dominant: true
        },

        ...
    }
}

对于数据库表示,sails / waterline将创建以下表格:

  • 表用户,
  • 表格角色,
  • 表格user_roles__role_roles_role代表集合

我知道我们可以强制模型USER和ROLE的名称 (使用属性' tablename':http://sailsjs.com/documentation/concepts/models-and-orm/attributes)。

但是我们如何强制关系表的名称? (特别是这个名字很长,而且往往超出限制。)

1 个答案:

答案 0 :(得分:1)

假设这是一个双向关系,并且Role模型有一个users集合,Sails会期望一个名为role_users__user_roles的表,它的角色id为first,user id为second。

您的示例表名称要求User占优势,并且要求Role模型具有名为roles_role的属性,该属性是User集合。

要创建自己的连接表,可以使用through关联方法并添加表示关系的新模型,可能是UsersRoles,并在该模型定义中指定tableName

through关联的示例: