Пожалуйста, помогите решить проблему. Существуют модели отделов и сотрудников
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", "part ":" qwew1qweqweqe "," DepartmentID ":" 1 "}
, что приводит к ошибке
original: {error: нулевое значение в столбце «DepartmentId» нарушает ненулевое ограничение в 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] (внутренний / stream_base_commons.js: 94: 17) имя: «ошибка», длина: 280, уровень серьезности: «ОШИБКА», код: «23502», подробности: «Недостающая строка содержит (62, teqwest1, 121, qwew1qweqweqe, 2019-10-11 14: 51: 37.856 + 00, 2019-10-11 14:51:37.856 + 00, null). ', Подсказка: не определено, позиция: не определено, internalPosition: undefined, internalQuery: undefined, где: undefined, схема:' public ', таблица:' Employees ', столбец:' DepartmentId ', dataType: undefined, ограничение: undefined, файл: 'execMain.c', строка: '2017', подпрограмма: 'ExecConstraints', sql: 'INSERT INTO "Сотрудники" ("id", "name", "age", "ухода","creationAt", "updatedAt") ЗНАЧЕНИЯ (ПО УМОЛЧАНИЮ, $ 1, $ 2, $ 3, $ 4, $ 5) RETURNING *; ', параметры: [' teqwest1 ',' 121 ',' qwew1qweqweqe ',' 2019-10-11 14:51: 37,856 +00: 00 ',' 2019-10-11 14: 51: 37.856 +00: 00 ']}, sql:' INSERT INTO "Сотрудники" ("id", "name", "age", "уйти", "creationAt", "updatedAt") ЗНАЧЕНИЯ (ПО УМОЛЧАНИЮ, $ 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 ']}
Стек:
Nodejs
Экспресс
Postgres
Sequelize
Как решить эту проблему, что бы создать в базе данных с внешним ключом DepartmentId?