(四.2)sequelize增删改查

@

新增数据(有待考证(原因是操作时候必须要有表对象))User.create

这个位置需要引入上述的model建表的两个对象

const {Blog , User} =  require('./model')

!(async function() {
  创建用户 添加表数据 这样相应的内容按照表数据都会添加上 添加时间 和 修改时间 会自动的产生
  const zhangsan = await User.create({
	userName:'zhangsan',
	password:'123',
	nickName:'张三'
  })
 可以直接使用对象打印出来数据看一下
 console.log('zhansan',zhangsan.dataValues)
})() 
 

查询数据 User.findOne attributes findAll findAndCountAll

const {Blog , User} =  require('./model')

!(async function() {
	//查询一条数据----------------------------------
	const zhangsan = await User.findOne({
		where:{
			userName:'zhangsan'
		}
	})
	console.log('zhangsan',zhangsan,dataValues)
	
	//查询特定的列(一条)----------------------------------
	const zhangsan = await User.findOne({
		attributes:['userName','nickName'],
		where:{
			userName:'zhangsan'
		}
	})
	console.log('zhangsan',zhangsan.dataValues)

	//查询一个列表----------------------------------
	const zhangsanBlogList = await Blog.findAll({
		where:{
			userId:1
		},
		order:[
			//可以添加多条
			['id','desc']
		]
	})
	//注意这个地方出来的是zhangsanBlogList返回的东西 直接点dataValues 是不好用 所以
	console.log('zhangsan',zhangsanBlogList.map(blog => blog.dataValues))
	//这样返回的就是比较纯净的一个数组

	//分页----------------------------------
	const blogPageList= await Blog.findAll({
		limit:2, //限制本次查询2条
		offset:0, //跳过多少条
		order:[
			//可以添加多条
			['id','desc']
		]
	})
	console.log('blogPageList',blogPageList.map(blog => blog.dataValues))

	//查询总数----------------------------------
	const blogListAndCount = await Blog.findAndCountAll({
		limit:2, //限制本次查询2条
		offset:0, //跳过多少条
		order:[
			//可以添加多条
			['id','desc']
		]
	})
	console.log('blogListAndCount',
		// 所有的总数,不考虑的分页的数据
		blogListAndCount.count, 
		//这个和上面的获取的数据是一样的就你取出来的数据
		blogListAndCount.rows.map(blog => blog.dataValues) 
	)
	
})() 

连表查询

这个地方注意 就是之前在做关联外键的时候有一个配置是谁和谁所关联的
所以这个地方就是你使用哪个对象开始进行查询的操作 就是获取哪个表数据 然后得到所关联的数据
在这里插入图片描述

const {Blog , User} =  require('./model')
!(function(){

	const blogListWithUser = await Blog,findAndCountAll({
		order:[
			//可以添加多条
			['id','desc']
		],
		//关联查询的条件
		include:[
			{
				model:User,  //所基于的关联对象
				attributes:['userName','nickName'], //关联表的所获取的字段
				where:{     //相应的查询条件
					username:'zhangsan'
				}	
			}
		]
	})

	console.log('blogListWithUser ',
		// 所有的总数,不考虑的分页的数据
		blogListWithUser.count, 
		//数据整合一下 查询的出的数据 每一条里面都有一个user 这个user就是最早创建的时候创建的那个
		blogListWithUser.rows.map(blog => {
			const blogVal = blog.dataValues
			blogVal.user = blogVal.user.dataValues
			return blogVal 
		}) 
	)
})()

在这里插入图片描述

更新数据 update

新建update.js

 const {User} = require('./model')
 
!(async function(){

	const updateRes = await User.update({
		nickName:'张三1'
	},{
		where:{
			userName:'zhangsan'
		}
	})
	console.log('updateRes...',updateRes) //返回结果是一个数组,就是修改了几行
	console.log('updateRes...',updateRes[0]>0) //返回结果是true
	
})()
 

删除数据 destroy

 const {User} = require('./model')
 
!(async function(){

	const deleteData = await User.destroy({
		where:{
			id:4
		}
	})
	console.log('deleteData ...',deleteData ) //返回结果是一个数字 就是删除的条数
	console.log('deleteData ...',deleteData > 0 )

})()
 

注意删除外键关联

上述删除的用户的时候 就会出现相应的关联删除 但是这个外键关联是sequelize做的,所以删除的时候会提示相应的报错意思就是你有外键关联 不能直接删除,但是如果是数据库做的外键关联的情况,在删除的时候就可以直接的删除,然后怎么使用sequelize来解决,后面再说,现在的解决的方案就是去MySQL的可视化工具或者命令行,把外键的关联改成那个就是关联的那个

介绍sequelize连接池

是一种连接机制 在相应的位置保存着

posted @ 2022-08-10 17:44  无梦南柯  阅读(315)  评论(0编辑  收藏  举报