Express使用Sequelize操作数据库
admin
2024-02-15 12:21:21
0

一、在Express框架使用ORM模型访问关系型数据库

1、关系型数据库:是用二维表存储数据。一个关系就是张二维表

​ 关系A(id,name,sex,age)

2、SQL:结构化查询语言(脚步语言)

​ (1)插入记录:insert into 表名(列名1,…) values(值1…)

​ (2)删除记录:delete from 表名 [ where 条件 ]

​ (3)更新记录:update 表名 set 列名1=值1,…… [where 条件]

​ (4)查询记录:select 列名 from 表名 [where 条件]

​ CRUD操作(增、删、改、查)

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

1、ORM:对象关系模型(对象关系映射) Object Releastion Model,程序中的对象和数据库中的关系(表格)进行映射。可以使

开发者在程序方便的对数据库进行操作(用户在程序操作对象实际就是操作数据库的表格)

2、ORM的映射关系:

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

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

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

//数据库中的表:bookInfo(id,isbn,name,author,press,price,publishDate),该表在程序中的映射
//js中的类
class Book{constructor(id,isbn,name,author,press,price,publishDate){this.id = idthis.isbn = isbn......}
}/* 类名:Book属性名:id,isbn,name,author,press,price,publishDate*/let  b1 = new Book(1,90000123,'A','A1','abc',78,'2010-12-15')
//映射关系:Book      ------------    BookInfoid属性      ------------      id列b1    ----  BookInfo表中的一条记录(行)

三、在Node中ORM的实现

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

2、Sequelize模块的安装:

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

​ (2)安装Sequlize模块:npm install sequelize

3、Sequelize模块的使用

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

​ 第一步:导入:

​ 第二步:创建数据库的配置对象

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

 第三步:测试连接配置

const mysql_test = require('./mysqlconfig')
mysql_test.authenticate()  //用来测试数据库是否连接成功.then(()=>{console.log('数据库连接成功')}).catch((err)=>{console.log('数据库连接失败'+err)})

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

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

​ 模型名 对应的是 数据表名

​ 模型的属性对应的是表的列

const Sequelize = require('sequelize')
//1.导入数据库的配置对象
const  mysql_Sequelize = require('../config/mysqlconfig')
//2.创建模型与数据库中的表实现映射
const Book = mysql_Sequelize.define('bookinfo',{id:{type: Sequelize.INTEGER, //表示id的数据类型为int型(整数型)autoIncrement: true, //表示id的值在表中是自增的allowNull: false, //表示id对应列的值不能为空fields: 'id' //实现模型的属性名和表的列名之间映射关系(对应关系)},isbn: {type: Sequelize.STRING,allowNull: true,fields:'isbn'},name: {type: Sequelize.STRING,allowNull: true,fields: 'name'},author:{type: Sequelize.STRING,allowNull: true,fields:'author'},press:{type: Sequelize.STRING, //STRING类型对应Mysql中的varchar类型allowNull:true,fields:'press'},price: {type: Sequelize.DECIMAL(10,2), //小数类型,共10位,其中小数点后有2位allowNull:true,fields:'price'},pubdate: {type: Sequelize.DATE, //日期类型allowNull: true,fields: 'pubdate'}
},{freezeTableName: true, //不使用sequelize给模型自定义的表名(自定义表名的命名规则:模型名后加s)timestamps: false //若为true,在获取数据时,会自动添加量列数据(createTime、updateTime)
})
//2.导出模型
module.exports = Book

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

​ a、插入记录:

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

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

​ a、表单序列化:表单名.serialize() ,作用是将表单中所有控件的值序列化成字符

相关内容

热门资讯

魔兽世界破军比武场任务怎么做 魔兽世界破军比武场任务怎么做指定去排破军比武场的场景战役即可
伊洛纳便携式烹饪工具怎么获得 伊洛纳便携式烹饪工具怎么获得完成任务。做一个苹果沙冰给食品店老板,就可以获得一个便携式烹饪工具,让自...
良辰美景接近打成语 良辰美景接近打成语【风前月下】:指良辰美景。【良辰媚景】:美好的时光和景物。同“良辰美景”。【良时美...
“给”字开头成语有哪些? “给”字开头成语有哪些? “给”字开头成语:无。给的成语:户给人足、家给民足、家给人足、人给家足、自...
肺上有肿瘤治得好吗? 肺上有肿瘤治得好吗?有一定的效果肺脏肿瘤不好治疗,临床上肺脏恶性肿瘤属于肺癌。在治疗上早期可以通过手...
怎样做才能让对方感觉到你真的很... 怎样做才能让对方感觉到你真的很在乎他?多给她一些精神上的关心和爱护,多体贴她,要包容她。对她周围的一...
帮忙写篇作文! 帮忙写篇作文!今天轮到我给孩子们做班主任,一天过后,心情很激动。看着孩子们可爱的笑脸,就仿佛看到我童...
有人说郭德纲的相声比较俗,那么... 有人说郭德纲的相声比较俗,那么相声“俗雅”的解释权在谁手里?我认为相声俗雅的解释权应该在观众手里,而...
2024年中国旅游者出境满意度... 今天分享的是:2024年中国旅游者出境满意度报告 报告共计:28页 2024年中国出境游满意度报告:...
7.15上海游戏峰会:解码全球... 2025年7月15日,由上海市新闻出版局指导、上海市网络游戏行业协会主办的上海游戏精英峰会暨上海游戏...
新华全媒头条|共绘雪域高原同心... (配本社同题文字稿) 孩子们在位于西藏那曲市色尼区南部新城的“温暖嘉·色尼城市书房”看书(202...
小学楼道里涂鸦墙用水粉颜料可以... 小学楼道里涂鸦墙用水粉颜料可以吗,墙上是油漆涂过的不可以,用水粉一擦就掉了,用丙烯颜料,和水粉感觉差...
有什么科幻小故事,短一些? 有什么科幻小故事,短一些? 遇见外星人一天,我在公园里散步。突然,一个像盘子一样发着许多光的东西...
幼儿园安吉室外投放哪些材料 幼儿园安吉室外投放哪些材料幼儿园安吉室外投放材料滚筒、积木、长板、木箱、梯子、沙水、锅、碗、瓢、盆、...
爱情的十字路口我该怎么选择? 爱情的十字路口我该怎么选择?真爱掌握在你自己手中!爱他就努力争取,不顾一切!还不是很爱他,那就等等,...
有没有和《恶魔狂想曲之明日骄阳... 有没有和《恶魔狂想曲之明日骄阳》差不多精彩的小说?女主角很多,个性鲜明,主角多情但不滥情,富于正义文...
功利主义是否认为道德应该是一种... 功利主义是否认为道德应该是一种绝对的命令?最源头的定义是边沁的观点,使所有人的快乐最大化。之后有缪尔...
什么是CC猫啊 什么是CC猫啊CC是一只可爱活泼的猫猫,因为诞生于沪江网校所以全称:沪江网校CC猫。CC猫常常出没于...
美剧迷失第三季好看吗? 美剧迷失第三季好看吗?个人觉得,迷失第一季还不错,很惊异.越往后看越没意思.相信我你会越看越迷失的....