sequelize init의 models/index.js 설정이 작동하지 않을 때 해결법
Updated:
문제 상황
sequelize init의 models/index.js 설정이 작동하지 않을 때 해결한 방법입니다.
sequelize init
sequelize-cli를 통해 sequelize의 기본 구조를 생성하고, models 폴더에 모델을 정의하면 sequelize가 내역을 Database에 반영해줍니다.
그런데 models/index.js 설정이 작동하지 않아 models 폴더에 작성한 모델이 Database에 반영되지 않을 때, 이를 해결하기 위해 작성한 글입니다.
목차
- 모델을 직접 등록하는 방법
- sequelizerc 설정하는 방법
모델을 직접 등록하는 방법
fs
를 사용하는 대신 models/index.js의 설정을 변경하여 모델을require()(sequelize, Sequelize)
로 직접 등록합니다.
const Sequelize = require('sequelize');
const env = process.env.NODE_ENV || 'development';
const config = require('../config/config.json')[env];
const db = {};
const sequelize = new Sequelize(
config.database,
config.username,
config.password,
config,
);
// Model
db.User = require('./user')(sequelize, Sequelize)
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
sequelizerc 설정하는 방법
- models 폴더의 모든 파일들을 불러와서 db객체에 모델을 정의하기 위해
import 메서드
가 models 폴더의 파일을 순회하며 Model을 취합니다. - 해당 구문을 사용하기 위해 sequelizerc 설정을 적용하니 정상적으로 작동했습니다.
fs.readdirSync(__dirname)
.filter(file => {
return (
file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js'
);
})
.forEach(file => {
const model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
sequelize
는 항상 최신 버전으로 유지한다.
{
"sequelize": "^6.3.4",
"sequelize-cli": "^6.2.0",
}
참조
최종 수정 시간: 2019-07-23 00:24:00 +0000
Leave a comment