繁体   English   中英

模型未作为 Sequelize.Model 导入

[英]Model not getting imported as a Sequelize.Model

我正在尝试通过另一个表使用续集 N:M 关系,但我不断收到此错误:

throw new Error(${this.name}.belongsToMany called with something that's not a subclass of Sequelize.Model);

Error: Cases.belongsToMany called with something that's not a subclass of Sequelize.Model 

这是我的课程:

模型/User.js

const Sequelize = require('sequelize');
const sql = require('../config/sql');
const DocumentType = require('./DocumentType');
const Case = require('./Case');


const User = sql.define('Users', {
    firstName: Sequelize.STRING,
    lastName: Sequelize.STRING,
    email: Sequelize.STRING,
    document: Sequelize.INTEGER,
    documentTypeId: Sequelize.INTEGER,
    password: Sequelize.STRING,
    active: Sequelize.INTEGER
});

User.belongsTo(DocumentType, {foreignKey: 'documentTypeId' ,as: 'documentType'});
User.belongsToMany(Case, { through: 'CaseUser' });

User.findById = (id) => {
    return User.findOne({
        where: {
            id: id
        },
        include: 'documentType'
    });
};

User.findByEmail = (email) => {
    return  User.findOne({
        where: {
            email: email
        },
        include: 'documentType'
    });
};

User.checkActiveStatus = (id) => {
    return User.findOne({
        where: {
            id: id
        },
        attributes: ['active']
    });
};

module.exports = User;

模型/案例.js

const Sequelize = require('sequelize');
const sql = require('../config/sql');
const User = require('./User');

const Case = sql.define('Cases', {
  description: Sequelize.STRING,
  startDate: Sequelize.STRING
});

Case.belongsToMany(User, {through: 'CaseUser'});

module.exports = Case;

我只在Case.belongsToMany(User, { through: 'CaseUser' });得到错误而不是在User.belongsToMany(Case, { through: 'CaseUser' });

奇怪的是,如果我切换belongsToMany(User...belongsToMany(DocumentType...并导入DocumentType 文件,我不会收到错误belongsToMany(DocumentType...模型实际上与用户模型相同

模型/DocumentType.js

const Sequelize = require('sequelize');
const sql = require('../config/sql');

const DocumentType = sql.define('DocumentTypes', {
  name: Sequelize.STRING,
  slug: Sequelize.STRING
}, {
  timestamps: false
});

module.exports = DocumentType;

关于什么可能导致这种行为的任何想法?

谢谢!

您应该尽量避免循环依赖。

  1. 删除行
const Case = require('./Case');

Case.belongsToMany(User, {through: 'CaseUser'});

来自 User.js

  1. 删除行
const User = require('./User');

User.belongsToMany(Case, { through: 'CaseUser' });

来自 Case.js

  1. 创建associations.js
const Case = require('./Case');
const User = require('./User');

Case.belongsToMany(User, {through: 'CaseUser'});
User.belongsToMany(Case, { through: 'CaseUser' });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM