天天看點

【node.js開發前準備(四)】-配置sequelize一、安裝sequelize二、使用sequelize三、不保證原創

一、安裝sequelize

1、在【終端】輸入

npm install --save sequelize
           
npm install --save mysql2
           

2、【db-config】中添加sequelize配置

,
    sequelize:{
        host:'127.0.0.1',
        dialect:'mysql',
        dialectOptions:{
            // 字元集
            charset:'utf8mb4',
            collate:'utf8mb4_unicode_ci',
            supportBigNumber:true,
            bigNumberStrings:true
        },
        pool:{
            max:5,
            min:0,
            acquire:30000,
            idle:10000
        },
        define:{
            freezeTableName:true,
            timestamps:false,
            paranoid:false,
            operatorsAliases:false
        },
        timezone:'+08:00'
    }
           

二、使用sequelize

1、建立【model】檔案夾,添加【user】的Model

【node.js開發前準備(四)】-配置sequelize一、安裝sequelize二、使用sequelize三、不保證原創

内容代碼示例:

module.exports = function(sequelize,DataTypes){
    return sequelize.define(
        'user',
        {
            userid:{
                type: DataTypes.BIGINT,
                primaryKey: true,
                autoIncrement: true
            },
            userrolecode:{
                type: DataTypes.STRING,
                field: 'userrolecode'
            },
            username:{
                type: DataTypes.STRING,
                field: 'username'
            },
            userphone:{
                type: DataTypes.STRING,
                field: 'userphone'
            },
            userpassword:{
                type: DataTypes.STRING,
                field: 'userpassword'
            },
            userdepartment:{
                type: DataTypes.STRING,
                field: 'userdepartment'
            },
            userzzname:{
                type: DataTypes.STRING,
                field: 'userzzname'
            },
            userzzprincial:{
                type: DataTypes.STRING,
                field: 'userzzprincial'
            },
            userzzphone:{
                type: DataTypes.STRING,
                field: 'userzzphone'
            },
            userkey:{
                type: DataTypes.STRING,
                field: 'userkey'
            },
            userorganization:{
                type: DataTypes.STRING,
                field: 'userorganization'
            },
            userorganizationcode:{
                type: DataTypes.STRING,
                field: 'userorganizationcode'
            }
        }
    );
}
           

2、為了統一管理模型,在【model】裡建立【index.js】檔案

【node.js開發前準備(四)】-配置sequelize一、安裝sequelize二、使用sequelize三、不保證原創

内容示例代碼為:

// 統一管理模型
const config=require('../config/db-config');
const Sequelize = require("sequelize");
const {QueryTypes,DataTypes} = require("sequelize");

var sequelizeObj = new Sequelize(
    config.mysql.database,
    config.mysql.user,
    config.mysql.password,
    config.sequelize);

const user = require('../model/user')(sequelizeObj,DataTypes)   // 使用者表
const role = require('../model/role')(sequelizeObj,DataTypes)   // 角色表

role.hasMany(user,{   // 一對多
    foreignKey:'userrolecode',
    sourceKey:'roleid'   //源模型
})

user.belongsTo(role,{   // 一對一
    foreignKey:'userrolecode',
    targetKey:'roleid'    //目标模型
    //表示user表中的roleid屬性指role表中的id屬性
})

module.exports = {user,role}
           

3、在【userDao】中添加sequelize方法

【node.js開發前準備(四)】-配置sequelize一、安裝sequelize二、使用sequelize三、不保證原創

示例代碼:

const allSqlAction=require('../lib/mysql')
const {user,role}=require('../model/index')

// 連接配接和使用資料庫=>操作資料庫
module.exports={
    // 根據手機号查找使用者
    searchUserByPhone:async(query)=>{
        try{
            console.log("傳到userDao的查詢條件為:")
            console.log(query)
            let result=await user.findAll({
                where:{
                    'userphone':query
                },
                include:[role]
            });
            return result;
        }catch(error){
            console.log("根據手機号查找使用者錯誤:" + error); 
            return null;
        }
    },
    // 查找所有的角色
    searchAllRoles:async(rolename)=>{
        try{
            let result=await role.findAll({
                attributes:['roleid','rolename'],
                 raw:true,
            })
            return result;
        }catch(error){
            console.log("查找使用者角色錯誤:" + error);
        }
    }
}
           

三、不保證原創

内容來自學習課件ppt,不保證原創

繼續閱讀