zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    设计模式
    雨夹雪背景特效
    lottie-前端实现AE动效
    响应式布局实现原理
    关于小程序(含uniapp)中使用npm模块
    使用脚手架快速搭建React项目
    vue项目接入友盟统计站点数据
    git常用命令
    uniapp请求方法的封装
    小程序获取用户登录及手机号登录
  • 原文地址:https://www.cnblogs.com/easth/p/node_sequelize_sql.html
Copyright © 2011-2022 走看看