Node.js Sequelize在创建子实体时看不到外键
请帮忙解决这个问题。有部门模型和员工模型Node.js Sequelize在创建子实体时看不到外键,node.js,postgresql,express,sequelize.js,Node.js,Postgresql,Express,Sequelize.js,请帮忙解决这个问题。有部门模型和员工模型 module.exports = (sequelize, DataTypes) => { var Department = sequelize.define('Department', { name: DataTypes.STRING, description: DataTypes.STRING }); Department.associate = function(models) { Department.hasMany(models.empl
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");
}
};
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
});
在控制器中,我调用该函数,该函数应在我的数据库中创建带有部门ID的电子邮件
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");
}
};
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
});
我正在通过邮递员发送一个请求
{“姓名”:“teqwest1”,“年龄”:“121”,“出发”:“qwew1qweqweqe”,“部门ID”:“1”}
导致错误
原件:
{错误:“DepartmentId”列中的null值违反了NOTNULL约束
在Connection.parseE(/home/vitalik/node/node_modules/pg/lib/Connection.js:604:11)
在Connection.parseMessage(/home/vitalik/node/node_modules/pg/lib/Connection.js:401:19)
在插座上。(/home/vitalik/node/node_modules/pg/lib/connection.js:121:22)
在Socket.emit(events.js:198:13)
在addChunk(_stream_readable.js:288:12)
在readableAddChunk(_stream_readable.js:269:11)
在Socket.Readable.push(_stream_Readable.js:224:10)
在TCP.onStreamRead[as onread](internal/stream_base_commons.js:94:17)
名称:“错误”,
长度:280,
严重性:“错误”,
代码:“23502”,
详情:
'失败的行包含(62,teqwest1,121,QWEW1QWEQE,2019-10-11 14:51:37.856+00,2019-10-11 14:51:37.856+00,null)。',
提示:未定义,
位置:未定义,
内部位置:未定义,
internalQuery:未定义,
其中:未定义,
架构:“公共”,
表:"雇员",,
列:“部门ID”,
数据类型:未定义,
约束:未定义,
文件:“execMain.c”,
行:“2017年”,
例程:“ExecConstraints”,
sql:
'插入“员工”(“id”、“姓名”、“年龄”、“离职”、“创建数据”、“更新数据”)值(默认值,$1、$2、$3、$4、$5),返回*;',
参数:
['teqwest1',
'121',
“qwew1qweqweqe”,
'2019-10-11 14:51:37.856 +00:00',
'2019-10-11 14:51:37.856 +00:00' ] },
sql:
'插入“员工”(“id”、“姓名”、“年龄”、“离职”、“创建数据”、“更新数据”)值(默认值,$1、$2、$3、$4、$5),返回*;',
参数:
['teqwest1',
'121',
“qwew1qweqweqe”,
'2019-10-11 14:51:37.856 +00:00',
'2019-10-1114:51:37.856+00:00']
堆栈:
Nodejs
快车
博士后
续集
如何解决这个问题,在一个有外键DepartmentId的数据库中会创建什么?谢谢你的回答,我做了你建议的更改,但不幸的是错误仍然是一样的。作为参考,我将提供CLI错误的全文谢谢你的回答,我做了你建议的更改,但不幸的是错误仍然是一样的。有关信息,我将从CLI提供错误的全文
module.exports = (sequelize, DataTypes) => {
const Department = sequelize.define('Department', {
id: {
type: DataTypes.STRING,
primaryKey: true,
},
name: DataTypes.STRING,
description: DataTypes.STRING
});
Department.associate = (models) => {
models.Department.hasMany(models.Employee);
};
return Department;
};
module.exports = (sequelize, DataTypes) => {
const Employee = sequelize.define('Employee', {
name: DataTypes.STRING,
age: DataTypes.INTEGER,
});
Employee.associate = (models) => {
models.Employee.belongsTo(models.Department, {
foreignKey: {
name: 'depart',
allowNull: false
}
});
};
return Employee;
};