刚开始使用Sequelize并且我已经设置了一堆模型和种子,但我无法找出引用与关联。如果他们甚至做了我认为他们做的事情,我就不会看到参考用例,但我在文档中找不到好的解释。
这是多余的引用和关联吗?
module.exports = (sequelize, DataTypes) => {
const UserTask = sequelize.define('UserTask',
{
id: {
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4
},
userId: {
type: DataTypes.UUID,
references: { // <--- is this redundant to associate
model: 'User',
key: 'id'
}
}
// ... removed for brevity
},
{
classMethods: {
associate: models => { <--- makes references redundant?
UserTask.belongsTo(models.User, {
onDelete: 'CASCADE',
foreignKey: {
fieldName: 'userId',
allowNull: true,
require: true
},
targetKey: 'id'
});
}
}
}
);
return UserTask;
};
答案 0 :(得分:10)
使用references
创建对另一个表的引用,而不添加任何约束或关联。这意味着这只是信令数据库的一种方式,这个表可以引用另一个。
创建association
将为属性添加外键约束。你可以执行关联功能背后的所有魔力。即User.getTasks();
此处有关references
的更多信息:https://sequelize.readthedocs.io/en/latest/docs/associations/#foreign-keys_1
此处关于association
:http://docs.sequelizejs.com/manual/tutorial/associations.html