sequelizejs relations / associations,hasMany / belongsTo vs对定义模型的引用

时间:2016-12-12 23:23:37

标签: javascript mysql node.js orm sequelize.js

关于续集的关系,我有点困惑。

做同样的事情:

var User = this.sequelize.define('user', {/* attributes */}), 
Company  = this.sequelize.define('company', {/* attributes */});

User.belongsTo(Company); 

这样做:

var User = this.sequelize.define('user', {
    company_id : {
        references: {
            model: 'Company'
            key: id
        }
    }
    /* more attributes */
}), 
Company  = this.sequelize.define('company', {/* attributes */});

有什么区别?显然,两个代码与结果相同,在用户表中将companyId外键添加到公司。

谢谢!

1 个答案:

答案 0 :(得分:2)

它们只是获得相同结果的不同方法。根据您在代码或特定选项中遵循的模式,最终可能会比另一个更清晰。请注意,在您的示例中,前者比后者更紧凑,这可能使其成为更好的选择。

但是你的例子中有一个错误。第一个确实会产生items = sh.ntpq("-nc rv").split(',') for pair in items: name, value = pair.split('=') # strip because we weren't careful with whitespace if name.strip() == 'offset': print(value.strip()) 的外键,但在第二个示例中,您使用的是companyId。如果您想使用下划线的表格和列名称而不是驼峰案例,则需要传递company_id中的underscored: true选项。