【发布时间】:2015-12-09 08:29:23
【问题描述】:
我真正的问题是:是否可以使用 sequelize 将模型放在单独的文件夹中?
我问这个是因为我正在尝试在我的应用程序中使用模块化结构,为了实现我需要在同一个文件夹中拥有模型、控制器和路由,这就是我的意思:
├── node_modules
├── src
│ ├── client
│ │ └── ... //Frontend things managed by angular (like views, etc...)
│ └── server
| ├── components
| | ├── db
| | | ├── migrations
| | | | ├── users.js
| | | | └── ...
| | | ├── seeders
| | | ├── config.json
| | | ├── options.json
| | | └── index.js
| | ├── env
| | └── ...
│ ├── modules //By module i mean an entity
| | ├── users
| | | ├── users.model.js
| | | ├── users.controller.js
| | | └── index.js //Here i define the routes
| | └── ...
| └── ...
|
├── package.json
└── server.js
我怎么能这样做?如何将模型拆分到单独的文件夹中?
也许我要问的是:如何配置 models/index.js 脚本以从每个目录中读取模型?
models/index.js
'use strict';
var fs = require('fs');
var path = require('path');
var Sequelize = require('sequelize');
var basename = path.basename(module.filename);
var env = process.env.NODE_ENV || 'development';
var config = require(__dirname + '/../config.json')[env];
var db = {};
if (config.use_env_variable) {
var sequelize = new Sequelize(process.env[config.use_env_variable]);
} else {
var sequelize = new Sequelize(config.database, config.username, config.password, config);
}
fs
.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf('.') !== 0) && (file !== basename);
})
.forEach(function(file) {
if (file.slice(-3) !== '.js') return;
var model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(function(modelName) {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
我的想法是在 modules 目录的每个文件夹下查找 xxx.model.js,其结构如下:
modules
├── index.js //The above script configured to read the x.model.js in each folder
├── users
| ├── users.model.js
| ├── users.controller.js
| └── ...
├── questions
| ├── questions.model.js
| ├── questions.controller.js
| └── ...
└── ...
注意:我来自 Laravel 背景,我猜迁移和模型在 sequelize 中有何不同,因为当您定义模型时,您会告诉列的类型等,与迁移相同...
【问题讨论】:
-
我的大部分问题都通过the docs 解决了,但模型文件夹的破坏没有解决
-
您能告诉我您是如何解决您的问题的吗?我没有从文档中得到太多。
-
@JonathanSolorzano,您找到解决问题的方法了吗?
-
@VijayDev 不,在一个单独的文件夹中工作
标签: node.js model sequelize.js modularity