位置: 编程技术 - 正文

Node.JS使用Sequelize操作MySQL的示例代码(node.js使用mysql)

编辑:rootadmin

推荐整理分享Node.JS使用Sequelize操作MySQL的示例代码(node.js使用mysql),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js使用的v8引擎是由哪个公司开发的,nodejs用法,node.js使用的v8引擎是由哪个公司开发的,node.js使用mysql,node.js使用的v8引擎是由哪个公司开发的,node.js使用教程,node.js使用方法,node.js使用方法,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.JS提供了操作数据库的基础接口,我们可以通过mysql模块的query方法进行操作,但是需要编写SQL语句,对于SQL语句并不精通的人来说有一定的难度,而且在代码中保留SQL语句也有一定的危险性。为了方便进行数据库操作,ORM框架应运而生,Sequelize正是这样的模块。

安装Sequelize

首先,使用cd命令将终端控制台定位到项目的根目录,然后使用npm安装:

安装mysql2

由于sequelize依赖于mysql2所以也需要安装mysql2:

编写配置

在项目根目录新建个“configs”文件夹,在文件夹中新建一个名为“mysql-config.js”的文件,代码如下:

配置说明

dbname: 数据库名称 uname: 数据库登录名 upwd: 数据库登录密码 host: 数据库主机 port: 数据库端口,mysql默认是 dialect: 数据库类型,这里是mysql pool: 连接池配置

【具体配置详见MySQL相关的博客】

对sequelize进行简单封装

在项目根目录新建“data”文件夹,在改文件夹中新建“db.js”文件。在db.js中添加以下代码。

首先,创建sequelize实例:

定义一个defineModel函数用于定义数据模型:

在这里我们可以对模型定义做一些修改,比如添加id、createAt、updateAt、version和status字段等。这样,通过这个函数定义的模型都会带这几个字段,通常一个数据库表都应该包含这些字段。

sequelize默认会为模型添加id字段,自增,主键。所以在这里可以不用关心该字段的定义。

在调用seq.define()方法的时候,设置了“timestamps”为false,当timestamps为true时,默认会为模型添加createAt和updateAt两个字段,数据类型为Sequelize.DATE,这里我们自己定义为Sequelize.BIGINT用于存储时间戳。

同时,设置tableName和模型的名称一致,这样符合我们的惯性思维。

最后,db.js模块导出defineModel函数:

定义模型

在data目录下新建“model”文件夹,并在model文件夹中添加“Notices.js”。在Notices中,先引入需要的模块:

然后定义数据模型对象:

引入的db模块就是前面对sequelize的封装,然后通过defineModel()函数定义模型,添加公共字段。

在这里引入sequelize模块主要是为了定义模型的时候指定数据类型。

同步数据结构到数据库

当模型定义后,需要在数据库中建立对应的数据表,这时候需要做结构的同步,可以使用以下方法进行同步:

如果数据库中已经存在该模型对应的表,则不会进行同步操作,如果想要强制进行数据结构的同步,可以通过force参数指定:

使用模型

Node.JS使用Sequelize操作MySQL的示例代码(node.js使用mysql)

在Notices.js文件中可以直接使用Model对象进行操作,如果是外部文件,需要先引入Notices模块

添加数据

通过数据模型对象的create方法可以添加一条数据,方法的返回值是一个Promise对象,所以可以直接调用Promise对象的then方法进行后续操作。

then方法的参数是一个function对象,该function对象有一个data参数,这个data参数就是前面create方法操作的数据对象,可以从data里面获得数据在数据库中的id是什么。

通过await和async来实现同步编程效果

通过then的方式很像是嵌套function的回调式异步编程,有些有不喜欢嵌套function的人可以采用await来实现同步编程的效果,更多关于await的用法这里不讨论。

await修饰的函数调用必须写在async修改的函数里面,否则会报错,所以这里在最外层包了一个即时函数。

关于即时函数的概念可以参考《JavaScript面向对象编程指南》这本书,里面说的挺详细的。简单说就是定义后立刻调用的一个函数。

修改数据

使用模型对象的update方法可以修改数据:

updata(values, opts)方法的第一个参数是要修改的数据集合,字段名称和数据表对应。第二个参数是相关的一些操作参数,where用于限制修改的数据的条件,和SQL语句的where作用一样。

上面的效果是修改id为的数据的status字段的值为2。

查询数据

通过数据模型对象的find相关的方法可以实现查询效果:

查询所有数据

改方法会返回Notices表中所有的数据,返回值依然是一个Promise对象。

条件查询

order字段用于指定排序规则,这里指定以createAt字段做降序排序。 limit字段用于指定查询的数据量,这里表示返回前条数据。 where字段用于指定条件查询,这里表示查询status为0的数据。

删除数据

通过数据模型对象的destroy方法可以销毁一条数据,具体用法和查询、修改等类似。

但是通常我们做删除操作的时候并不是真的将数据从数据库中抹除,而是通过数据的状态字段去标识,方便后续维护。所以每个表通常都会定义一个status字段。

复杂的where条件

在sequelize中,还存在一个Op对象,用于处理复杂的条件操作。

[案例一]

上面这段代码表示修改status的值为2,修改gmId的值为。修改的条件的,数据的id字段必须是在[1, 4, 2, 8, , ]这个数组中的数据。

[案例二]

上面这段代码表示查询所有sendDate小于等于当前时间,并且expireDate大于等于当前时间,且status的值为0,并且to字段的值为或者为0。

参考文档

以上也只是举了一部分例子进行简单说明而已,详细的可以查考这份文档,虽然是英文的,但是稍微花点时间应该多少是可以看懂的。

详解如何让Express支持async/await 随着Node.jsv8的发布,Node.js已原生支持async/await函数,Web框架Koa也随之发布了Koa2正式版,支持async/await中间件,为处理异步回调带来了极大的方便。既然Ko

NodeJs通过async/await处理异步的方法 场景远古时代我们在编写express后台,经常要有许多异步IO的处理。在远古时代,我们都是用chunk函数处理,也就是我们最熟悉的那种默认第一个参数是err

浅谈node的事件机制 Node.jsusesanevent-driven,non-blockingI/Omodelthatmakesitlightweightandefficient.在nodejs的官方文档中,明确写出了node的一个特性是event-driven(事件驱动),可见其非常重

标签: node.js使用mysql

本文链接地址:https://www.jiuchutong.com/biancheng/379553.html 转载请保留说明!

上一篇:浅谈在koa2中实现页面渲染的全局数据(koa2 koa)

下一篇:NodeJs通过async/await处理异步的方法(nodejs await)

  • 资源税折算后计提怎么算
  • 建设工程项目融资
  • 自建厂房销售
  • 生产车间计提固定资产折旧会计科目
  • 子公司注销欠母公司借款怎么办
  • 预收房款如何申报缴纳增值税
  • 营改增后房地产企业增值税如何核算
  • 会务费抵扣限额
  • 一般纳税人如何纳税申报
  • 关于不动产进项税额分期抵扣的新政策,以下不属于
  • 同一个单位,应收应付都有,怎么调账
  • 审计报告可以不披露上年数吗
  • 外购产品用于赠送帐务处理
  • 我的初级备考经历怎么写
  • 平均年限法如何计算
  • 外资企业注销需要商务局备案吗
  • 城市维护建设税减免税优惠政策
  • 增值税普通发票怎么开
  • 房产评估价偏低
  • 帮别的公司代销产品,对方公司不开具发票怎么做帐
  • 新版edge浏览器历史记录
  • 事业单位服务收入怎么做账
  • switcher.exe - switcher是什么进程
  • 联想笔记本在bios中怎么把图标和字变大
  • 如何实现php图片打印
  • 在window系统中哪些用户可以查看日志
  • 充值会员卡送的营销秘诀
  • 检验费用会计分录
  • 什么是馥芮白
  • 社保退回的工伤怎么赔偿
  • PHP:Memcached::setSaslAuthData()的用法_Memcached类
  • yii框架文档
  • 普莱斯德
  • vue项目如何打包成dist
  • 创建vue3项目的步骤
  • php二进制字符串压缩
  • 消费积分如何做账
  • 指令获取
  • 现代服务业主要功能
  • python爬虫入门教程
  • windows7/windows10/windows11最强Audacity音频编辑播放器软件,免费下载
  • MYSQL ERROR 1045 (28000): Access denied for user (using password: YES)问题的解决
  • 员工意外伤害保险可以抵扣进项税吗
  • 商业承兑汇票在网银上怎么查询
  • 哪几种进项税额允许抵扣
  • 减免增值税计入营业外收入明细科目
  • 工程施工人工费,材料费,机械费占多少比例
  • 金税盘抵增值税
  • 优惠券会计分录怎么做
  • 福利费14%的规定
  • 医疗保险个人缴纳比例
  • 发生坏账时的分录
  • 销售商品返现怎么做
  • 企业无偿为员工买社保
  • 盈余公积的会计处理
  • fedora linux安装教程
  • solaris 10安装
  • win8的ie浏览器
  • linux中的awk命令详解
  • 两种方法解决一半模型的问题
  • qconsvc.exe - qconsvc是什么进程 有什么作用
  • rftray.exe - rftray是什么进程 有什么用
  • macos教程
  • linux crontab用法
  • react增删改查功能
  • jquery排序上升和排序下降
  • css选择器 菜鸟教程
  • js实现登录界面
  • nodejs搭建个人博客网站
  • python 转义字符处理
  • python的删除命令
  • js不重复集合
  • python爬虫抓包
  • Python函数中仅允许有一条return语句
  • unity5权威讲解
  • python里面颜色
  • 总结网络io模型的特点
  • 南通国资委网站首页
  • 医保电子凭证怎么激活
  • 广西怎么查社保记录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设