NodeJS hasMany使用不是Sequelize.Model的子类的内容调用

wqsoz72f  于 2023-03-22  发布在  Node.js
关注(0)|答案(1)|浏览(119)

我在一个MVC项目中使用Sequelize时遇到了一个问题。每次我尝试使用hasOne或hasMany时,它都会给我带来同样的错误。有些人建议将每个模型放在一个文件中,或者创建一个associations.js来处理关联。它可以工作,但我个人认为这不是最好的方法,我想找出一个更好的替代方案。
P.S:使用Postgre和Sequelize 6.28
下面是我的代码:
模型:Perfil.js

const { Sequelize, DataTypes } = require('sequelize')
const db = require('../../db/conn')

// MODELS
const User = require('./Usuario')

const Perfil = db.define('perfis', {
    id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        allowNull: false
    },
    nome: DataTypes.STRING(90),
    descricao: DataTypes.TEXT('long')
}, { schema: "acesso", underscored: true })

Perfil.hasMany(User)

module.exports = Perfil

Usuarios.js

const { Sequelize, DataTypes } = require('sequelize')
const db = require('../../db/conn')

// MODELS
const Perfil = require('./Perfil')

const Usuario = db.define('usuarios', {
    id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
        allowNull: false
    },
    nome: {
        type: DataTypes.STRING(255),
        allowNull: false
    },
    nome_exibicao: DataTypes.STRING(50),
    sexo: DataTypes.STRING(45),
    email: {
        type: DataTypes.STRING(60),
        allowNull: false
    },
    password: {
        type: DataTypes.STRING(60),
        allowNull: false
    },
    status: {
        type: DataTypes.INTEGER,
        allowNull: false,
        defaultValue: 1
    }
}, { schema: "acesso", underscored: true });

Usuario.belongsTo(Perfil)

module.exports = Usuario
pgky5nke

pgky5nke1#

您正在尝试导入彼此模块中的模型-这些是循环依赖。请将模型注册代码转换为模型模块中的函数,并仅在所有模型都将注册之后才在一个DB模块中调用它们注册关联。请参阅this answer以了解如何正确执行此操作。

相关问题