【发布时间】:2021-12-07 02:38:26
【问题描述】:
希望你做得很好。有这个问题在 Nodejs 中与 Sequelize Postgresql 进行关联。县有许多副县,副县有一个县。但我正面临这个问题:
throw new Error(`${source.name}.${_.lowerFirst(Type.name)} called with something that's not a subclass of Sequelize.Model`); ^
Error: Sousprefectures.hasOne called with something that 's not a subclass of Sequelize.Model
at Function. < anonymous > (C: \Users\ LENONO\ Desktop\ projetBangui\ node_modules\ sequelize\ dist\ lib\ associations\ mixin.js: 63: 13)
at Function.associate(C: \Users\ LENONO\ Desktop\ projetBangui\ models\ sousPrefecture.js: 22: 23)
at C: \Users\ LENONO\ Desktop\ projetBangui\ models\ index.js: 32: 19
at Array.forEach( < anonymous > )
at Object. < anonymous > (C: \Users\ LENONO\ Desktop\ projetBangui\ models\ index.js: 30: 17)
这是我与县相关的 SousPrefectures 模型。
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Sousprefectures extends Model {
static associate(models) {
// define association here
Sousprefectures.belongsTo(models.Prefectures, {
foreignKey: {
name: "prefecture_id",
allowNull: false }
});
}
};
Sousprefectures.init({
_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
nom: {
type: DataTypes.STRING,
allowNull: false
},
}, {
sequelize,
freezeTableName: true,
modelName: 'Sousprefectures',
});
return Sousprefectures;
};
这是我的县模型
'use strict';
const { Model } = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Prefectures extends Model {
static associate(models) {
// define association here
Prefectures.hasOne(models.SousPrefectures, {
foreignKey: {
name: "prefecture_id",
allowNull: false }
});
}
};
Prefectures.init({
_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
nom: {
type: DataTypes.STRING,
allowNull: false
},
}, {
sequelize,
modelName: 'Prefectures',
});
return Prefectures;
};
这里是我的 Index js(由 Sequelize 生成)
'use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
db[model.name] = model;
});
Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
我应该怎么做才能在另一个文件(例如:控制器)中访问我的模型?
【问题讨论】:
标签: postgresql express model sequelize.js