传送门

2-7、sequelize 创建连接数据库

(1)sequelize 介绍

  • ORM - Object Relational Mapping (对象关系映射)

(2)使用 sequelize 创建数据库模型方法

  • 数据库,用 JS 中的模型(class或对象) 代替
  • 一条或多条记录,用 JS 中一个对象或数组代替
  • sql 语句,用对象方法代替

(3)代码演示

  • 环境配置
  • 代码演示
/* seq.js */
const Sequelize = require('sequelize')const conf = {host:'localhost',dialect:'mysql'
}const seq = new Sequelize('koa2-weibo_db', 'root', '123456',conf)//测试连接
seq.authenticate().then(() => {console.log('ok')
}).catch(() => {console.log('err')
})
// module.exports = seq

2-8、sequelize 创建数据模型及关联外键

2-9、sequelize 插入数据

const { User, Blog} = require('./model')!(async function demo () {//创建用户const zhangsan = await User.create({userName:'zhangsan',password:'123',nickName:'张三'})console.log('zhangsan',zhangsan.dataValues)
})()

2-10、sequelize 查询数据

  • 查询一条记录
const { User} = require('./model')
!(async function () {const zhangsan = await User.findOne({where: {userName: 'zhangsan'}})console.log(zhangsan.dataValues)
})()
  • 查询特定的列
const { User} = require('./model')
const zhangsanName = await User.findOne({attributes: ['userName', 'nickName'],where: {userName: 'zhangsan'}})console.log(zhangsanName.dataValues)
})()
  • 查询一个列表
const { Blog} = require('./model')
!(async function () {const zhangsanBlogList = await Blog.findAll({where:{userId:1},order:[["id","desc"]]})console.log(zhangsanBlogList.map(blog => blog.dataValues))
})()
  • 数据分页
const { Blog} = require('./model')
!(async function () {const blogPageList = await Blog.findAll({limit:2,//一页多少个数据offset:0,//跳过多少个数据order:[['id','desc']]})console.log(blogPageList.map(blog => blog.dataValues))
})()
  • 查询总数和数据分页
const { Blog} = require('./model')
!(async function () {const blogListAndCount = await Blog.findAndCountAll({limit:2,offset:0,order:[["id", "desc"]]})console.log(blogListAndCount.count,blogListAndCount.rows.map(blog => blog.dataValues))
})()

2-11、sequelize 连表查询

  • 连表查询1 查询zhangsan博客(主)连带查询用户信息(次)
  //连表查询1 查询zhangsan博客(主)连带查询用户信息(次)const blogListWithUser = await Blog.findAndCountAll({order:[["id","desc"]],include:[{model:User,//次表attributes:['userName','nickName'],where: {userName :'zhangsan'}}, ],})console.log(blogListWithUser.count)console.log(blogListWithUser.rows.map(blog => {//取出全部数据const blogVal = blog.dataValues//数据格式优化blogVal.user = blogVal.user.dataValuesreturn blogVal;}))
})()


代码讲解


  • 连表查询2 查询zhangsan用户信息(主)连带查询博客(次)
 const userListWithBlog = await User.findAndCountAll({attributes:['username','nickName'],include:[{model:Blog}]})console.log(userListWithBlog.count)console.log(userListWithBlog.rows.map(user => {const userVal = user.dataValuesuserVal.blogs =userVal.blogs.map(blog => blog.dataValues)return userVal}))


代码讲解

另外:如果控制台想查看输出的博客信息可以进行以下修改

2-12、sequelize 更新与删除操作

  • 更新操作
const {User} = require('./model')!(async function () {const updateRes = await User.update({nickName:'张三'},{where: {userName:'zhangsan'}})console.log('updateRes...',updateRes[0] > 0)
})()
  • 删除操作
const {Blog} = require('./model')!(async function ()){const delBlogRes = await Blog.destroy({where:{id:4}})console.log('delBlogRes',delBlogRes>1)
}

2-13、sequelize 配置连接池(线上环境下)

使用 sequelize 在 node 环境下操作 Mysql相关推荐

  1. Window环境下配置MySQL 5.6的主从复制、备份恢复

    Window环境下配置MySQL 5.6的主从复制.备份恢复 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 ...

  2. python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  3. window mysql 同步复制_Window环境下配置MySQL 5.6的主从复制、备份恢复

    Window环境下配置MySQL 5.6的主从复制.备份恢复 1.环境准备 Windows 7 64位 MySQL 5.6 主库:192.168.103.207 从库:192.168.103.208 ...

  4. python实现mysql二叉树_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

  5. window环境下安装mysql(超级详细--婷姐教的)

    window环境下安装mysql 一.卸载 1.软件的卸载 ①通过控制面板 ②通过电脑管家等软件卸载 ③通过安装包中提供的卸载功能卸载 2.清理残余文件 ①清除安装残余文件 ②清除数据残余文件 ③清理 ...

  6. system+执行mysql命令_Windows环境下通过MySQL以SYSTEM身份执行系统命令 -电脑资料

    前段时间出了两个关于MySQL的漏洞<MySQL CREATE FUNCTION功能mysql.func表允许注入任意函数库漏洞>.<MySQL CREATE FUNCTION功能l ...

  7. windows mysql 数据库存放位置_windows环境下更改Mysql数据库存储位置的具体步骤

    最近对windows2003环境下的mysql数据位置进行迁移工作.在网上搜集到的教程是这样的. 一.首先把mysql的服务先停掉. 二.更改MySQL配置文件My.ini中的数据库存储主路径 打开M ...

  8. 在Mac OS环境下安装MySQL服务

    在Mac OS环境下安装MySQL服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我之前介绍过window环境下安装mysql服务,以及在Linux环境下安装mysql服务,今 ...

  9. linux 查看mysql安装目录_Linux环境下安装MySQL数据库示例教程

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 Linux环境对大多数SQL初学者还是比较陌生,今天给大家演示一下如何在Linux环境 ...

  10. linux centos7 mysql_Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

最新文章

  1. Poemscape|Beta阶段第九天
  2. ios添加全局悬浮按钮_iOS开发悬浮按钮
  3. Python如何存储数据到json文件
  4. Tesseract入门-VS2015下调用Tesseract4.0 +win7 64位系统
  5. swift - 根试图控制器的手势返回冲突 - push 新的tabbar控制器手势冲突
  6. mysql主从延时这么长_MySQL主从延迟问题解决
  7. 八款JS框架介绍及比较
  8. Pascal 语言中的关键字及保留字
  9. JAVA中的观察者模式observer
  10. Codefroces 762A k-th divisor 数论
  11. android首字母检索音乐,ATX 系列 - 如何测试网易云音乐 (Android 篇)
  12. 30本互联网相关的电子书
  13. oracle alter database,DBA常用命令之alter database
  14. arcpy批量合并融合矢量数据
  15. 国税局发票查验API接口文档说明
  16. 10、自上而下的电路架构设计
  17. mysql 中类似dateadd_MySQL查询中的DATEADD或DATE_ADD?
  18. JAVA-制作飞机大战遇到的问题
  19. 天线只是一根导线吗?
  20. OpenCV学习之模板匹配

热门文章

  1. [C++] C/C++ 取整函数ceil(),floor()
  2. C++与STL简单介绍( C/C++机试)
  3. 3810.最长连续休息时间-AcWing题库
  4. 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)
  5. 漫谈Clustering:高斯混合模型(GMM)
  6. 鸡蛋掉落----经典dp(动态规划)
  7. firefox 53支持java_JavaSelenium 2.53在Firefox 47上不起作用
  8. java构建模式_《Java设计模式》之构建者模式
  9. XP照片缩略图和照片本身显示不一致,如何解决防范?
  10. jquery 添加扩展方法及为选择的对象添加方法