我刚开始在我的应用程序中使用Node.js ORM Sequelize . 到目前为止,我已经在同一个文件中定义了数据库模型,并在我的控制器文件中使用它们来执行基本操作 . 这是我定义模型的方式:
var sqlize = require("sequelize");
var sq = new sqlize('test', 'root', 'root', {
host: 'localhost',
dialect: 'mysql',
pool: {
max: 5,
min: 0,
idle: 10000
}
});
function services(){
var ser = sq.define('services',{
idservices: {
type: sqlize.INTEGER,
autoIncrement: true,
primaryKey: true
},
title: sqlize.STRING,
des: sqlize.TEXT,
vendor: sqlize.STRING,
rating: sqlize.STRING,
pricing_hr: sqlize.STRING,
pricing_mn: sqlize.STRING,
size: sqlize.STRING,
cpu: sqlize.STRING,
ram: sqlize.STRING,
os: sqlize.STRING,
img_path: sqlize.STRING
});
sq.sync();
return ser;
}
function category(){
var category = sq.define('category',{
id: {
type: sqlize.INTEGER,
autoIncrement: true,
primaryKey: true
},
category: sqlize.STRING,
sid: sqlize.INTEGER
},{
freezeTableName: true,
timestamps: false
});
sq.sync();
return category;
}
function cat(){
var cat = sq.define('cat',{
idcat: {
type: sqlize.INTEGER,
autoIncrement: true,
primaryKey: true
},
cat: sqlize.STRING
},{
freezeTableName: true,
timestamps: false
});
sq.sync();
return cat;
}
exports.services=services;
exports.category=category;
exports.cat=cat;
但是,还有另一种方法可以在单独的文件中定义模型,并创建一个加载模型的索引文件 . 我发现Sequelize的官方文档对我来说还不够用 . 我知道如何创建模型和index.js文件但是如何在我的代码中使用这些模型很难找到 . 任何人都可以帮我一个非常简单的例子(没有关系),包括单独文件中模型的定义及其在其他代码文件中的使用 .
2 回答
编辑
我've fixed my problem. Now my models are in seperate files and I'm在我的代码中使用它们 . 这里's how I' ve定义了我的模型文件
services.js
:然后在
index.js
中使用sequelize.import我导入了所有模型:现在,我可以在项目的任何文件中使用这些模型,方法是
index.js
,如下所示:现在,如果要使用服务模型选项,则可以使用服务模型对象:
在文件中分离模型是一个缩放因子 . 基本上,如果你这样做,几乎总是更好 .
你可以看看Ghost和他们的模型组织,虽然他们不使用sequelize,但是另一个ORM,叫做bookshelf .
让我举个例子来说明我如何组织我的模型:
I have one models/ folder which contains all models :
每个模型只导出一个
initialize function
,用户模型如下所示:对于
assignment.js
看起来几乎相同,但没有钩子:I load the models one by one in another file
现在我有另一个名为
database.js
的模块来管理我的模型的配置 . 它看起来像这样:使用这个而不是像
require( fs.readDirSync( ... ) )
这样的东西有助于我的工具,因为文件被解析而不是动态依赖 .希望这可以帮助 .