Files
nxxmdata/government-backend/models/index.js

100 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 政府后端模型索引文件
* @file index.js
* @description 导出所有模型并建立关联关系
*/
const { sequelize } = require('../config/database');
// 导入所有模型
const User = require('./User');
const AdminStaff = require('./AdminStaff');
const Department = require('./Department');
const Position = require('./Position');
const Farmer = require('./Farmer');
const HarmlessPlace = require('./HarmlessPlace');
const HarmlessRegistration = require('./HarmlessRegistration');
const Material = require('./Material');
const Slaughterhouse = require('./Slaughterhouse');
const EpidemicAgency = require('./EpidemicAgency');
const SmartCollar = require('./SmartCollar');
const SmartEarmark = require('./SmartEarmark');
const SmartHost = require('./SmartHost');
const WarehouseTransaction = require('./WarehouseTransaction');
// 初始化所有模型
const initModels = () => {
try {
// 处理直接导出的模型
if (User && typeof User !== 'function') {
// User模型已经直接导出不需要额外处理
}
// 处理需要sequelize参数的模型
const modelsToInit = [
AdminStaff,
Department,
Position,
Farmer,
HarmlessPlace,
HarmlessRegistration,
Material,
Slaughterhouse,
EpidemicAgency,
SmartCollar,
SmartEarmark,
SmartHost,
WarehouseTransaction
];
// 初始化模型
modelsToInit.forEach(modelFactory => {
if (typeof modelFactory === 'function') {
// 调用函数获取模型实例
const model = modelFactory(sequelize);
// 将初始化后的模型赋值回原来的变量
Object.assign(module.exports, { [model.name]: model });
}
});
console.log('✅ 所有政府后端模型初始化完成');
} catch (error) {
console.error('❌ 政府后端模型初始化失败:', error);
}
};
// 初始化模型
initModels();
// 导出sequelize和所有模型
module.exports = {
sequelize,
User,
AdminStaff,
Department,
Position,
Farmer,
HarmlessPlace,
HarmlessRegistration,
Material,
Slaughterhouse,
EpidemicAgency,
SmartCollar,
SmartEarmark,
SmartHost,
WarehouseTransaction
};
// 同步所有模型到数据库(可选)
const syncModels = async (options = {}) => {
try {
await sequelize.sync(options);
console.log('✅ 政府后端所有模型已同步到数据库');
return true;
} catch (error) {
console.error('❌ 政府后端模型同步失败:', error);
return false;
}
};
// 添加syncModels到导出
module.exports.syncModels = syncModels;