Sequelize在创建子实体时看不到外键
请帮助解决问题。有部门和员工模型
module.exports = (sequelize, DataTypes) => {
var Department = sequelize.define('Department', {
name: DataTypes.STRING,
description: DataTypes.STRING
});
Department.associate = function(models) {
Department.hasMany(models.employee);
};
return Department;
};
module.exports = (sequelize, DataTypes) => {
var Employee = sequelize.define('Employee', {
name: DataTypes.STRING,
age: DataTypes.INTEGER,
depart: DataTypes.STRING
});
Employee.associate = function (models) {
Employee.belongsTo(models.department, {
foreignKey: {
allowNull: false
}
});
};
return Employee;
};
协会也写有一个部门可以有多名雇员,一个雇员只有一个部门。
进一步在迁移中添加DepartmentId
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Employees", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
age: {
type: Sequelize.INTEGER
},
depart: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
},
DepartmentId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'Departments',
key: 'id'
}
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable("Employees");
}
};
在控制器中,我进一步调用该函数,该函数应在我的数据库中创建带有DepartmentId的电子邮件
module.exports.createEmployee = async (req, res) => {
if (!req.body) {
return res.status(400).json({ massage: "Employee body is required"
});
}
try {
const employee = await Employee.create({
name: req.body.name,
age: req.body.age,
depart: req.body.depart,
DepartmentId: req.body.DepartmentId
});
我正在通过邮递员发送请求
{“ name”:“ teqwest1”,“ age”:“ 121”,“ depart”:“ qwew1qweqweqe”,“ DepartmentID”:“ 1”}
导致错误
{错误:“ DepartmentId”列中的空值违反了非空约束
堆栈:
Nodejs
快递
Postgres
序列化
如何解决此问题,将在具有外键DepartmentId的数据库中创建什么?
回答如下:
Sequelize在创建子实体时看不到外键
请帮助解决问题。有部门和员工模型
module.exports = (sequelize, DataTypes) => {
var Department = sequelize.define('Department', {
name: DataTypes.STRING,
description: DataTypes.STRING
});
Department.associate = function(models) {
Department.hasMany(models.employee);
};
return Department;
};
module.exports = (sequelize, DataTypes) => {
var Employee = sequelize.define('Employee', {
name: DataTypes.STRING,
age: DataTypes.INTEGER,
depart: DataTypes.STRING
});
Employee.associate = function (models) {
Employee.belongsTo(models.department, {
foreignKey: {
allowNull: false
}
});
};
return Employee;
};
协会也写有一个部门可以有多名雇员,一个雇员只有一个部门。
进一步在迁移中添加DepartmentId
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Employees", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
age: {
type: Sequelize.INTEGER
},
depart: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
},
DepartmentId: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'Departments',
key: 'id'
}
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable("Employees");
}
};
在控制器中,我进一步调用该函数,该函数应在我的数据库中创建带有DepartmentId的电子邮件
module.exports.createEmployee = async (req, res) => {
if (!req.body) {
return res.status(400).json({ massage: "Employee body is required"
});
}
try {
const employee = await Employee.create({
name: req.body.name,
age: req.body.age,
depart: req.body.depart,
DepartmentId: req.body.DepartmentId
});
我正在通过邮递员发送请求
{“ name”:“ teqwest1”,“ age”:“ 121”,“ depart”:“ qwew1qweqweqe”,“ DepartmentID”:“ 1”}
导致错误
{错误:“ DepartmentId”列中的空值违反了非空约束
堆栈:
Nodejs
快递
Postgres
序列化
如何解决此问题,将在具有外键DepartmentId的数据库中创建什么?
回答如下: