[英]how to declare a foreign key in a model in sequelize
我有一个名为 video.js 的 model。
module.exports= function(sequelize, DataTypes){
return sequelize.define(
"video",
{
id:{
type:DataTypes.INTEGER(11).UNSIGNED,
allowNull:false,
autoIncrement:true,
primaryKey:true,
field:"id"
},
title:{
type:DataTypes.STRING(20),
unique:true,
field:"title"
},
createdAt: {
type: DataTypes.DATE,
allowNull: true,
field: "createdAt"
},
updatedAt: {
type: DataTypes.DATE,
allowNull: true,
field: "updatedAt"
}
},
{
tableName:"video"
}
);
};
我在 mysql 中创建了一个与此 model 等效的表,并且我添加了一个外键,该外键正在另一个名为 user 的表中使用。
这是用户表的 model。
module.exports = function(sequelize, DataTypes) {
return sequelize.define(
"user",
{
id: {
type: DataTypes.INTEGER(11).UNSIGNED,
allowNull: false,
primaryKey: true,
autoIncrement: true,
field: "id"
},
firstName: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: "",
field: "firstName"
},
lastName: {
type: DataTypes.STRING(255),
allowNull: false,
defaultValue: "",
field: "lastName"
},
},
{
tableName: "user"
}
);
};
我使用 user 表中的 id 列作为 video 表中的外键,具有一对多关系,其中一个用户拥有一个或多个视频。 我面临的问题是我不知道如何用外键定义 model。
CREATE TABLE `video` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL DEFAULT '',
`createdAt` datetime DEFAULT NULL,
`updatedAt` datetime DEFAULT NULL,
PRIMARY KEY(`id`),
FOREIGN KEY (userId_FK) REFERENCES user(id));
如何在续集中创建与此视频表等效的 model?
sequelize 中的关联在这里得到了很好的解释: https://sequelize.org/master/manual/assocs.html
我想你的用户可以有很多视频?
'use strict'; module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { id: { type: DataTypes.INTEGER(11).UNSIGNED, allowNull: false, primaryKey: true, autoIncrement: true, field: "id" }, firstName: { type: DataTypes.STRING(255), allowNull: false, defaultValue: "", field: "firstName" }, lastName: { type: DataTypes.STRING(255), allowNull: false, defaultValue: "", field: "lastName" }, }, {}); User.associate = function(models) { User.hasMany(models.Video, { foreignKey: 'userId' }); }; return User; };
您的视频 Model 将定义如下:
'use strict'; module.exports = (sequelize, DataTypes) => { const Video = sequelize.define('Video', { id:{ type:DataTypes.INTEGER(11).UNSIGNED, allowNull:false, autoIncrement:true, primaryKey:true, field:"id" }, title:{ type:DataTypes.STRING(20), unique:true, field:"title" }, createdAt: { type: DataTypes.DATE, allowNull: true, field: "createdAt" }, updatedAt: { type: DataTypes.DATE, allowNull: true, field: "updatedAt" } }, {}); Video.associate = function(models) { Video.belongsTo(models.User, { foreignKey: 'userId', onDelete: 'CASCADE' }); }; return Video; };
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.