最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Sequelize在创建子实体时看不到外键

IT培训 admin 2浏览 0评论

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的数据库中创建什么?

回答如下:
发布评论

评论列表 (0)

  1. 暂无评论