在Express框架使用ORM模型访问关系型数据库
创始人
2024-02-18 09:34:32

一、ORM模型:设计思想,主要目的是简化计算机程序访问数据库

1、ORM:对象关系模型(对象关系映射) Object Releastion Model,将程序中的对象和数据库中关系(表格)进行映射。可以使开发者在程序中方便的对数据库进行操作(用户在程序操作对对象实际就是操作数据库的表格)

2、ORM的映射关系:

(1)程序中的模型(即为类) <——> 表名

(2)模型的类型(类中定义的属性)<——> 表的列

(3)由模型创建的对象(类的实例) <——> 表中的行

二、在Node中ORM的实现

1、Sequelize模块:支持ORM映射的模块,可以访问关系型数据库,可以提高node程序访问数据库的开发效率。

2、Sequelize模块的使用:

(1)安装MySQL模块:npm install mysql2

(2)安装Sequelize模块:npm install sequelize

3、Sequelize模块的使用

(1)创建数据库的配置文件

         1️⃣ 导入

         2️⃣ 创建数据库的配置对象

//1.导入Sequelize模块
const Sequelize = require('sequelize');
//2.使用Sequelize模块配置和数据库的连接信息
const mysql_Sequelize = new Sequelize('sales','root','syy2589',{host:'localhost', //数据库服务器的IP地址或域名port:'3306', //数据库使用的端口号,MySQL数据库默认端口号3306dialect: 'mysql', //数据库的类型pool:{  //数据库连接池:可以放若干个数据库的连接对象,提高数据库访问效率max:20, //数据库连接池中连接对象的最大个数min:3, //数据库连接池中连接对象的最少个数idle:20000 //等待延迟的时间,单位:毫秒},define:{'charset':'utf8' //处理MySQL中中文字符的问题}
})
// 3.导出数据库的连接对象
module.exports = mysql_Sequelize;

注:new Sequelize(数据库名,用户名,密码,(配置信息))

        3️⃣ 测试数据库是否连接成功

const mysqltest = require('./mysqlconfig.js');
mysqltest.authenticate() //用来测试数据库是否连接成功.then(()=>{console.log('数据库连接成功~')}).catch((err)=>{console.error(err);})

(2)创建模型:实现模型和数据表的映射

模型名 = sequelize.define('数据表名','模型的属性',{其他配置})

模型名 <——> 数据表名
模型的属性<——> 数据表列

const  Sequelize = require(sequelize);
//1.导入数据库的配置对象
const mysql_Sequelize = require('../config/mysqlconfig.js');
// 2.创建模型与数据库中的表实现映射
const Employee = mysql_Sequelize.define('employee',{'e_id':{type:Sequelize.STRING,// type:Sequelize.INTEGER, 表示id的数据类型为int型autoIncrement:false, //表示id的值在表中是否自增allowNull:false, //表示id对象的值不能为空fields:'e_id',//实现模型的属性名和表的列名之间的映射关系(对应关系)},'e_name':{type:Sequelize.STRING,autoIncrement:false,allowNull:false,fields: 'e_name',},'sex':{type:Sequelize.STRING,autoIncrement:false,allowNull:false,fields: 'sex',},'apartment':{type:Sequelize.STRING,autoIncrement:false,allowNull:true,fields: 'apartment',},'phone':{type:Sequelize.STRING,autoIncrement:false,allowNull:true,fields: 'phone',},'address':{type:Sequelize.STRING,autoIncrement:false,allowNull:true,fields: 'address',},
},{freezeTableName:true, //不使用Sequelize给模型自定义的表名(自定义表名的命名规则:模型名后加s)timestamps:false //若为true,在获取数据时会自动添加两列数据(createTime、updateTime)
});// 导出模型
module.exports = Employee;

(3)创建接口文件:使用模型创建数据表

         1️⃣插入记录

         模型名.create({ }).then((result)=>{}):then表示插入操作完成后的处理,result参数中保存有数据库返回的信息

// http://localhost:9000/employee/addemp
Emprouter.post('/addemp',(req,res)=>{console.log(req.body);Employee.create({id:req.body.id,name:req.body.name,sex:req.body.sex,apartment:req.body.apartment,phone:req.body.phone,address:req.body.address}).then((result)=>{if(result){res.json({code:1002})}})
})

(4)前端页面:使用jQuery向服务器端发起ajax请求

        1️⃣表单序列化:表单名.serizlize(),作用是将表单中所有控件的值序列化成字符串

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...