mysql - 在 Sequelize 中编码弱实体时出现问题

标签 mysql express sequelize.js

我正在创建一个电影应用程序。我已经在 mySql 上对数据库进行了建模,但在将其迁移到 Sequelize 时遇到了问题。我已遵循文档,但遇到了很多不同的错误。

我尝试过使用关联和索引(应该如此)。 This is the model I am trying to make .

OCCUPIED_SEATS 仅由两个外键组成,并且都构成唯一索引。

OCCUPIED_SEATS:

const SEATS = require("./Seats");
const SCREENING = require("./Screening");

const OCCUPIED_SEATS = sequelize.define("OCCUPIED_SEATS", {
    //SEATS_ID
    //SCREENING_ID
  },
  {
    indexes: [
      {
        unique: true,
        fields: [SEAT_ID, SCREENING_ID]
      }
    ],
    underscored: true
  }
);

module.exports = OCCUPIED_SEATS;

座位:

const OCCUPIED_SEATS = require("./Occupied_Seats");

const SEATS = sequelize.define("SEATS", {
    SEATS_ID: {       
      type: Sequelize.INTEGER,
      primaryKey: true,
      allowNull: false,
      autoIncrement: true
    },
    ROW: {
        type: Sequelize.STRING,
        allowNull: false,
    },
    COLUMN: {
        type: Sequelize.INTEGER,
        allowNull: false
    },
  },
  {
    underscored: true
  }
);

SEATS.hasMany(OCCUPIED_SEATS, {foreignKey: 'SEAT_ID'})

module.exports = SEATS;

筛选:

const OCCUPIED_SEATS = require("./Occupied_Seats");

const SCREENING = sequelize.define("SCREENING", {
    SCREENING_ID: {
      type: Sequelize.INTEGER,
      primaryKey: true,
      allowNull: false,
      autoIncrement: true
    },
    SCREENING_START_TIME: {
        type: Sequelize.TIME,
        allowNull: false,
    },
    DATE: {
        type: Sequelize.DATE,
        allowNull: false
    }
  },
  {
    underscored: true,
    indexes: [
      {
        unique: true,
        fields: [ROOM_ID, SCREENING_START_TIME, DATE]
      }
    ]
  }
);

SCREENING.hasMany(OCCUPIED_SEATS, {foreignKey: 'SCREENING_ID'});

module.exports = SCREENING;

尝试此操作时遇到的错误是:

[💻] Error: SEATS.hasMany called with something that's not a subclass of Sequelize.Model

我应该如何对模型进行编码?

最佳答案

看起来在新版本的 Sequelize 中,您必须通过 Sequelize.Model 类型定义模型:

class Seats extends Sequelize.Model {}
Seats.init({
    id: {       
      type: Sequelize.INTEGER,
      primaryKey: true,
      allowNull: false,
      autoIncrement: true
    },
    row: {
      type: Sequelize.STRING,
      allowNull: false,
    },
   ...
});
module.exports = Seats;

然后在其他地方:

Seats.hasMany(OccupiedSeatc, {foreignKey: 'SEAT_ID'})

参见model definition docsaccociation docs .

关于mysql - 在 Sequelize 中编码弱实体时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694727/

相关文章:

node.js - 通过 Postman 或 Karate 执行 HTTP 端点时如何使用 Istanbul 收集代码覆盖率

javascript - Node.js 多个 Express 对象

javascript - MySQL UPDATE 只更新整数,不更新字符串

PHP 查询未返回所有结果

php - HTML 中的多个提交按钮

node.js - Route.all() 需要回调函数,但得到一个 [object String])=> 然后显示 404 错误

postgresql - Sequelize 连接表并使用源模型过滤

sequelize.js - JSDoc 如何在不创建新 typedef 的情况下将成员添加到类型

node.js - Sequelize - 如何按关联过滤(belongsToMany)?

mysql - 我想在将一行插入另一个表后更新mysql中的表