当前位置:  开发笔记 > 编程语言 > 正文

在单独的文件中使用Sequelize创建模型并在项目中使用它们

如何解决《在单独的文件中使用Sequelize创建模型并在项目中使用它们》经验,为你挑选了1个好方法。

我刚刚开始在应用程序中使用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文件,但是很难在我的代码中使用这些模型。任何人都可以通过一个非常简单的示例(没有关系)来帮助我,该示例​​包括在单独文件中定义模型以及在其他代码文件中使用模型的情况。



1> TalhaRao_..:
编辑

我已经解决了我的问题。现在,我的模型位于单独的文件中,并且我在代码中使用它们。这是我定义模型文件的方式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;
});

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有