Sequelize 中的外键
Foreign Keys in Sequelize
我在 postgresql 中有两个表,它们通过外键相互关联。
CREATE TABLE Car(
car_id smallint primary key,
model varchar(50) not null
);
CREATE TABLE Person(
first_name varchar(20),
last_name varchar(20),
car_id smallint,
constraint primary key(first_name, last_name)
constraint fk foreign key(car_id) references Car(car_id));
在 models 目录中,我有三个文件 index.js、Person.js 和 Car.js。
Person.js 就像
module.exports = (sequelize, DataTypes) => {
var person= sequelize.define('person', {
name:{
type:DataTypes.STRING(50),
primaryKey:true
},
car_id:{
type:DataTypes.INTEGER,
}
}, {
classMethods: {
associate: function(models) {
person.hasOne(Car, {
foreignKey: 'car_id'
});
}
}
});
return person;
};
Car.js 就像
module.exports = (sequelize, DataTypes) => {
var person= sequelize.define('person', {
model:{
type:DataTypes.STRING(50),
allowNull: false
},
car_id:{
type:DataTypes.INTEGER,
primaryKey: true
}
}, {
classMethods: {
associate: function(models) {
}
}
});
return car;
};
我的代码是否正确,外键是否像这样工作?我应该改用 hasMany 吗?我在 index.js 和连接到数据库方面还有其他问题,所以我无法在我的机器上测试它。以及如何定义双主键?
尝试将您的协会代码移至 Index.js。在您的 Person.js 中,您是否导入了汽车模型?
你的问题不是 Clear Pal。您的代码具有一对一 (hasObe) 关联。您要求一对多关联(hasMany)。请说清楚。
参考下面关于关联的Tutorials/Blogs并尝试它们。希望他们能有所帮助。
一个。 Tutorial on One to One Assoc。
b. Tutorial on One to Many Assoc.
我在 postgresql 中有两个表,它们通过外键相互关联。
CREATE TABLE Car(
car_id smallint primary key,
model varchar(50) not null
);
CREATE TABLE Person(
first_name varchar(20),
last_name varchar(20),
car_id smallint,
constraint primary key(first_name, last_name)
constraint fk foreign key(car_id) references Car(car_id));
在 models 目录中,我有三个文件 index.js、Person.js 和 Car.js。 Person.js 就像
module.exports = (sequelize, DataTypes) => {
var person= sequelize.define('person', {
name:{
type:DataTypes.STRING(50),
primaryKey:true
},
car_id:{
type:DataTypes.INTEGER,
}
}, {
classMethods: {
associate: function(models) {
person.hasOne(Car, {
foreignKey: 'car_id'
});
}
}
});
return person;
};
Car.js 就像
module.exports = (sequelize, DataTypes) => {
var person= sequelize.define('person', {
model:{
type:DataTypes.STRING(50),
allowNull: false
},
car_id:{
type:DataTypes.INTEGER,
primaryKey: true
}
}, {
classMethods: {
associate: function(models) {
}
}
});
return car;
};
我的代码是否正确,外键是否像这样工作?我应该改用 hasMany 吗?我在 index.js 和连接到数据库方面还有其他问题,所以我无法在我的机器上测试它。以及如何定义双主键?
尝试将您的协会代码移至 Index.js。在您的 Person.js 中,您是否导入了汽车模型?
你的问题不是 Clear Pal。您的代码具有一对一 (hasObe) 关联。您要求一对多关联(hasMany)。请说清楚。
参考下面关于关联的Tutorials/Blogs并尝试它们。希望他们能有所帮助。
一个。 Tutorial on One to One Assoc。 b. Tutorial on One to Many Assoc.