我这里已经安装了phpstudy 带的有mysql数据库和phpmyadmin 通过phpmyadmin创建一个数据库叫node_sqlnodejs使用sequelize操作数据库
nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

创建项目文件夹node_sql 并使用vscode打开 之后打开vscode里的终端工具
生成package.json文件
nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

 nodejs使用sequelize操作数据库

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

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

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

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

nodejs使用sequelize操作数据库

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

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库
接下来就是建立模型

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

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

nodejs使用sequelize操作数据库

给这些字段加上类型

nodejs使用sequelize操作数据库

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

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

 nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

 nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

继续写

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

测试一下

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

控制台里也有信息

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

接下来再试一下

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

引入bcryptjs

nodejs使用sequelize操作数据库

之后改造接口

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

 nodejs使用sequelize操作数据库

现在来试一下登录

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

安装jwt 也就是jsonwebtoken
nodejs使用sequelize操作数据库

已经安装好了 引入jsonwebtoken

nodejs使用sequelize操作数据库

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

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

nodejs使用sequelize操作数据库

 nodejs使用sequelize操作数据库

登录成功并返回token了

nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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

如果不想token中带有用户密码 就删除用户密码之后再返回
nodejs使用sequelize操作数据库

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

nodejs使用sequelize操作数据库

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


对应链接:

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

相关文章: