【问题标题】:Sequelize not creating model association columnsSequelize 不创建模型关联列
【发布时间】:2019-12-12 13:55:09
【问题描述】:

我对 Sequelize 何时为关联创建字段感到有些困惑。

我已经使用 sequelize-cli 创建了我的迁移。这生成了一个迁移和模型文件。然后在模型文件中我填充了我的关联。然后运行npx sequelize-cli db:migrate

这会创建表,但不会创建模型中定义的关联所需的外键。

例如: 迁移问题:

"use strict";
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable("questions", {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      category: {
        type: Sequelize.INTEGER
      },
      question: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        defaultValue: new Date(),
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        defaultValue: new Date(),
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable("questions");
  }
};

模型问题:

"use strict";
module.exports = (sequelize, DataTypes) => {
  const questions = sequelize.define(
    "questions",
    {
      question: DataTypes.STRING,
      weight: DateTypes.INTEGER
    },
    {}
  );
  questions.associate = function(models) {
    // associations can be defined here
    models.questions.hasOne(models.question_categories);
    models.questions.hasMany(models.question_answers);
  };
  return questions;
};

【问题讨论】:

  • 根据您的关联,categories 表应该有一个question_id FK,answers 表也应该有一个question_id FK。所以您希望迁移操作在categoriesanswers 表上创建question_id FK?我理解正确吗?

标签: sequelize.js sequelize-cli


【解决方案1】:

您需要提供在外键中使用的列。 这些线路上的东西

  questions.associate = function(models) {
    // associations can be defined here
    models.questions.hasOne(models.question_categories, { foreignKey: 'question_id' });
    models.questions.hasMany(models.question_answers, { foreignKey: 'question_id' });
  };

这将在表 question_categories 中创建一个外键,指向表 questions

question_categories.question_id -> questions.id

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 2021-05-14
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多