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;
};