【问题标题】:Foreign Keys in SequelizeSequelize 中的外键
【发布时间】:2021-09-18 18:54:11
【问题描述】:

我在 postgresql 中有两个表,它们通过外键相互关联。

CREATE TABLE Car(
car_id smallint primary key,
model varchar(50) not null
);

CREATE TABLE Person(
first_name varchar(20),
last_name varchar(20),
car_id  smallint,
constraint primary key(first_name, last_name)
constraint fk foreign key(car_id) references Car(car_id));

models 目录中,我有三个文件 index.js、Person.js 和 Car.js。 Person.js 就像

module.exports = (sequelize, DataTypes) => {
  var person= sequelize.define('person', {
    name:{
        type:DataTypes.STRING(50),
        primaryKey:true
    },
    car_id:{
        type:DataTypes.INTEGER,
       
    }
  }, {
    classMethods: {
      associate: function(models) {
       person.hasOne(Car, {
            foreignKey: 'car_id'
          });
      }
    }
  });
  return person;
};

Car.js 就像

module.exports = (sequelize, DataTypes) => {
  var person= sequelize.define('person', {
    model:{
        type:DataTypes.STRING(50),
        allowNull: false
       },
    car_id:{
        type:DataTypes.INTEGER,
        primaryKey: true
    }
  }, {
    classMethods: {
      associate: function(models) {
       
      }
    }
  });
  return car;
};

我的代码是否正确,外键是否像这样工作?我应该改用 hasMany 吗?我在 index.js 和连接到数据库中有其他问题,所以我无法在我的机器上测试它。还有如何定义双主键?

【问题讨论】:

    标签: node.js database postgresql foreign-keys sequelize.js


    【解决方案1】:
    1. 尝试将您的关联代码移至 Index.js。在您的 Person.js 中,您是否导入了汽车模型?

    2. 你的问题不是 Clear Pal。您的代码具有一对一 (hasObe) 关联。您要求一对多关联(hasMany)。请说清楚。

    请参阅以下有关关联的教程/博客并尝试它们。希望他们会有所帮助。

    一个。 Tutorial on One to One Assoc。 湾。 Tutorial on One to Many Assoc.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2018-01-05
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多