sequelizejs 关系/关联,hasMany/belongsTo vs 定义模型上的参考
Posted
技术标签:
【中文标题】sequelizejs 关系/关联,hasMany/belongsTo vs 定义模型上的参考【英文标题】:sequelizejs relations/associations, hasMany/belongsTo vs reference on definition model 【发布时间】:2016-12-12 23:23:36 【问题描述】:我对续集的关系有点困惑。
也是一样的做法:
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 外键添加到 Company。
谢谢!
【问题讨论】:
【参考方案1】:它们只是实现相同结果的不同方法。根据您在代码中遵循的模式或特定选项,一个可能最终会比另一个更清晰。请注意,在您的示例中,前者比后者紧凑得多,这可能使其成为更好的选择。
但是,您的示例中有一个错误。第一个确实会产生companyId
的外键,但是在第二个示例中,您使用company_id
。如果您想使用带下划线的表名和列名而不是驼峰式大小写,则需要在Sequelize.define()
中传入underscored: true
选项。
【讨论】:
感谢您的回复。我阅读了下划线和其他选项。当我使用第二种形式创建复合主键(使用 belongsToMany)时,pk/fk 键是我表的最后一个属性,如何放置属性的顺序? 我认为目前不可能(因为这并不重要),但如果您想添加该功能,代码是开放的 :) 再次感谢。使用引用选项将属性添加到我的模型中,并在引用的 hablé 中使用带有 belongsToMany 的类方法似乎解决了属性顺序问题.. 你能告诉我这是不是不好的做法吗?也许litros有点rebundant .. 我不认为他们会这样做。我认为这是正确的答案:***.com/questions/46305459/…以上是关于sequelizejs 关系/关联,hasMany/belongsTo vs 定义模型上的参考的主要内容,如果未能解决你的问题,请参考以下文章