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

use*_*459 5 mysql orm node.js sequelize.js node-modules

我试图在两个模型之间引用外键。\n但我收到此错误:

\n\n

throw new Error(this.name + '.hasMany called with something that\\'s not a subclass of Sequelize.Model');\n^

\n\n

错误: user_relation.hasMany 调用的内容不是 Sequelize.Model 的子类

\n\n

squelize.js

\n\n
const Sequelize = require('sequelize');\nconst config = require('./default.config')\nconst sequelize = new Sequelize(config.database, config.user, config.password, {\n  host: config.host,\n  port: config.port,\n  dialect: 'mysql',\n  timezone: config.timezone,//\xe4\xb8\x9c\xe5\x85\xab\xe5\x8c\xba\n  pool: {\n    max: 5,\n    min: 0,\n    acquire: 30000,\n    idle: 10000\n  }\n});\n\nsequelize\n  .sync()\n  .then(err => {\n    console.log('Connection has been established successfully.');\n  })\n  .catch(err => {\n    console.error('Unable to connect to the database:', err);\n  });\n\nmodule.exports = sequelize;\n
Run Code Online (Sandbox Code Playgroud)\n\n

用户模型

\n\n

const Sequelize = require('sequelize');\n const Model = require('../../config/squelize');

\n\n
const Admin = Model.define('admin', {\n  username : {type : sequelize.STRING, allowNull : false},//\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d\n  password : {type : sequelize.STRING, allowNull : false},//\xe5\xaf\x86\xe7\xa0\x81\n  details : {type : sequelize.STRING, allowNull : true},//\xe7\xae\x80\xe4\xbb\x8b\n  head_thumb : {type : sequelize.STRING, allowNull : true},//\xe5\xa4\xb4\xe5\x83\x8f\n  gender : {type : sequelize.STRING, allowNull : true},//\xe6\x80\xa7\xe5\x88\xab\n  nickname : {type : sequelize.STRING, allowNull : true},//\xe6\x98\xb5\xe7\xa7\xb0\n  userid : {type : sequelize.INTEGER, autoIncrement : true, primaryKey : true}//\xe7\x94\xa8\xe6\x88\xb7userid\n}, {\n  freezeTableName:true\n})\n\nmodule.exports = Admin;\n
Run Code Online (Sandbox Code Playgroud)\n\n

管理关系.js

\n\n
var Sequelize = require('sequelize');\nconst Model = require('../../config/squelize');\nconst Admin = require('./admin.model')\n\nvar user_relation = Model.define('user_relation', {\n    id : {type : Sequelize.INTEGER, autoIncrement : true, primaryKey : true},\n    userid : {type : Sequelize.STRING, allowNull : false},//\xe7\x94\xa8\xe6\x88\xb7id\n    frendid : {type : Sequelize.STRING, allowNull : false}//\xe6\x9c\x8b\xe5\x8f\x8bid\n},{\n    timestamps:false,\n    freezeTableName:true,\n});\nuser_relation.hasMany(Admin,{as:'admin',foreignKey:'userid'})\n\nmodule.exports = user_relation;\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人已经看到类似的错误了吗?我搜索了几天没有任何问题,如果有人可以帮助我,我将非常感激,

\n\n

感谢 !

\n

Pra*_*ass 1

我认为您正在尝试在 user_relation 模型中为 Admin 模型中的 userid 键维护外键。如果是这样,您必须关联定义 sourceKey 和 targetKey。

使用相同的数据类型定义 sourceKey 和 targetKey。

在管理模型中

Admin.belongsTo(user_relation, {
    foreignKey: 'userid',
    targetKey: 'userid'
});
Run Code Online (Sandbox Code Playgroud)

在用户关系模型中

user_relation.hasMany(Admin, {
    as: 'admin',
    foreignKey: 'userid',
    sourceKey: 'userid'
});
Run Code Online (Sandbox Code Playgroud)