在Sequelize中编码弱实体时出现问题 [英] Problem coding a weak entity in sequelize

查看:100
本文介绍了在Sequelize中编码弱实体时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个电影应用程序。我已经在MySQL上建立了数据库的模型,但我在移植它以进行序列化时遇到了麻烦。我已按照文档操作,但收到许多不同的错误。

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

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

已占用座位

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

这篇关于在Sequelize中编码弱实体时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆