nodejs使用sequelize操作数据库

我这里已经安装了phpstudy 带的有mysql数据库和phpmyadmin 通过phpmyadmin创建一个数据库叫node_sql

接下来创建一个表 表名 users ,字段是5个

 表结构如下 id设为索引并勾选自增 其他字段都为文本类型

之后保存 用户表已经有了 用户的姓名 邮箱 密码 和创建时间

接下来就用nodejs连接数据库并实现用户的注册和登录

创建项目文件夹node_sql 并使用vscode打开 之后打开vscode里的终端工具
生成package.json文件

新建server.js文件  安装express 并编写代码

我这里已经安装过nodemon 所以用nodemon运行server.js

 

接口已经跑起来了  接下来就是连接数据库

使用sequelize连接mysql数据库 sequelize文档地址

使用sequelize的好处是不需要再使用sql语句,查数据库的操作和操作对象是相似的,把数据库映射成对象,对对象进行操作

在项目中安装sequelize模块 这个模块是将关系型数据库的sql转化成可操作的对象 还需要安装mysql和mysql2

已经安装好了 接下来连接数据库

在项目文件夹下新建文件夹database 在database文件夹下新建db.js 并在db.js里引入sequelize

接着写连接数据库的配置信息 这个文件需要导出供其他文件使用

按照文档里的配置  实例化里传数据库名称node_sql 数据库的用户名root 密码root  主机是localhost 数据库类型是mysql pool是连接池信息 设置最大连接5个,连接了5个以上就需要等待,最小是0, 后两个参数看文档写  附上文档关于连接池的配置截图

接下来就是建立模型

在项目文件夹下新建文件夹models 在models文件夹下新建Users.js文件

导入db和Sequelize 使用define建模 users表 字段和数据库里的字段一一对应

给这些字段加上类型

和数据库中的字段类型也是一致的

模型设计完了 接下来在接口中使用模型 就会调用数据库
在项目文件夹下新建文件夹routes 在routes文件夹下新建Users.js文件 在这里写登录注册的路由接口
引入express和expressRouter 引入Users模型

导出并在外边的server.js里使用

访问127.0.0.1:5000/api/v1的时候就会执行Users.js文件 在Users.js里找对应的路由 

 

接口正常的。接下来写注册接口

注册接口使用post的方式来接收参数 所以要先配置post数据解析 这里在server.js里使用express.json()来处理

 

可以看到拿到了传来的数据

继续写

拿到数据后就要存到数据库里了  在存数据库之前先查一下是否存在

测试一下

看到有报错了 不知道的字段 createdAt

控制台里也有信息

createdAt 和 updatedAt 这两个字段是模型自己加上去的,需要处理掉,在Users.js模型文件里加上

接下来再试一下

现在返回的是注册了,数据库里也有了一条数据

接下来对密码进行加密 安装bcryptjs

引入bcryptjs

之后改造接口

再来注册一下 这一次换了邮箱 

数据库里第二条数据的密码是加密后的了

用相同的邮箱再次注册就会提示用户已存在

接下来写登录功能 在Users.js里增加登录的路由 

 

现在来试一下登录

密码错误 这是因为使用的是第一个邮箱 而第一个邮箱在注册时接口里的密码还未加密 现在的登录接口是使用加密后的密码做比较的 所以密码就对不上了 接下来使用第二个邮箱登录看看

这就能登录上了 接下来要做的是在登录成功后返回token信息 token里包含一些对应的内容

安装jwt 也就是jsonwebtoken

已经安装好了 引入jsonwebtoken

在登录接口里 登录成功后返回一个token

使用jwt的sign方法   user.dataValues是查到的这一条用户信息 secret就用自己定义的 可以任意写 expiresIn是过期时间 1440秒

 

登录成功并返回token了

拿到token之后可以解析token 看内容  这里我随便找了个解析jwt的网站看一下

可以看到token是包含用户信息的,有创建时间,也有过期时间,经过前端处理后就能拿到用户信息

如果不想token中带有用户密码 就删除用户密码之后再返回

这样解析到的数据就没有密码这个字段了 

至此,nodejs使用sequelize操作数据库实现用户注册登录已经完成了


对应链接:

http://note.youdao.com/s/Ng1i85FN 

posted @ 2020-08-02 19:35  油麦菜大佬  阅读(5699)  评论(1编辑  收藏  举报