Nodejs:Postgresql中带有Sequelize的模型关联



希望你做得很好。有这个问题可以在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;
};

这里是我的索引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;

我应该怎么做才能在另一个文件(例如:控制器(中访问我的模型?

您将模型命名为Sousprefectures,但将其称为SousPrefectures。改变你对它的称呼或它的名字。

最新更新