我在一个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
1条答案
按热度按时间pgky5nke1#
您正在尝试导入彼此模块中的模型-这些是循环依赖。请将模型注册代码转换为模型模块中的函数,并仅在所有模型都将注册之后才在一个DB模块中调用它们注册关联。请参阅this answer以了解如何正确执行此操作。