在阅读sequelize doc association部分时,下面的解释确实让我困惑
hasOne和belongsTo在不同的模型中插入关联键 彼此。 hasOne在目标模型中插入关联键 而belongsTo在源模型中插入关联键。
还有,
Player.belongsTo(Team); // Will add a teamId attribute to Player to hold the primary key value for Team
似乎如果我在两个模型之间设置关系,sequelize会自动将外键添加到目标模型。
但根据文章, https://lorenstewart.me/2016/09/12/sequelize-table-associations-joins/z
我们必须手动将外键添加到模型文件中。
哪一个是对的??
自从我质疑这个问题以来已经有一段时间了。真的很感激任何详细的解释。
任何关于续集关联阅读的推荐文章也会受到赞赏,因为sequelize doc对于ORM初学者来说似乎不那么好。
答案 0 :(得分:1)
实际上这取决于你是如何创建表的。通过sync
或migrations
。
例如
const User = sequelize.define('user', {
username: Sequelize.STRING,
});
const Address = sequelize.define('add', {
address: Sequelize.STRING,
});
User.hasOne(Address);
sequelize.sync({ force: true })
.then(() => User.create({
username: 'test'
}))
.then(item => {
console.log(item.dataValues.itemPrice);
});
这将在数据库中创建userId字段
请注意,我使用sync
。但是,如果您使用迁移,则必须自己创建。
PS:最好使用migrations
代替sync
。