我刚刚开始在应用程序中使用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文件,但是很难在我的代码中使用这些模型。任何人都可以通过一个非常简单的示例(没有关系)来帮助我,该示例包括在单独文件中定义模型以及在其他代码文件中使用模型的情况。
我已经解决了我的问题。现在,我的模型位于单独的文件中,并且我在代码中使用它们。这是我定义模型文件的方式services.js
:
module.exports = function(sequelize, DataTypes) { return sequelize.define('services',{ idservices: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, title: DataTypes.STRING, des: DataTypes.TEXT, vendor: DataTypes.STRING, rating: DataTypes.STRING, pricing_hr: DataTypes.STRING, pricing_mn: DataTypes.STRING, size: DataTypes.STRING, cpu: DataTypes.STRING, ram: DataTypes.STRING, os: DataTypes.STRING, img_path: DataTypes.STRING }); };
然后,通过使用sequelize.import,index.js
我已经导入了所有模型:
var Sequelize = require('sequelize'); // initialize database connection var sequelize = new Sequelize('test', 'root', 'root', { host: 'localhost', dialect: 'mysql', pool: { max: 5, min: 0, idle: 10000 } }); // load models var models = [ 'services', 'serviceCategory', 'category' ]; models.forEach(function(model) { module.exports[model] = sequelize.import(__dirname + '/' + model); }); // export connection module.exports.sequelize = sequelize;
现在,可以通过以下要求在项目的任何文件中使用这些模型index.js
:
//********************************************* //Sequlize models to handle database commands; var models = require('../models/index.js'); var s = models.services; //Services table handler var sc = models.serviceCategory; //Service Category table handler var ca = models.category; //Category table handler
现在,如果要使用服务模型选项,则可以使用服务模型对象:
s.create({title: "anything"}).then(function(task){ task.save; });