koa连接mysql数据库并进行简单增删改查

连接数据库

初级菜鸟,为图方便暂时在路由中配置数据库未使用连接池 ,路由文件

const mysql = require('mysql')  //引入数据库插件
const koaRouter = require('koa-router');
const router = koaRouter();

//连接数据库
const connection = mysql.createConnection({
	host: 'localhost',
	user: 'root',
	password: '123456',
	port: '3306',
	database: 'testnode'
})
//新增数据
router.post('/add', async (ctx, next) => {
	console.log(Boolean( ctx.request.query.name && ctx.request.query.address && ctx.request.query.phone))
	if(ctx.request.query.phone && ctx.request.query.address && ctx.request.query.name){
		
		var data = {}
		var createdTime=new Date()
		var querySql="INSERT INTO address (createdTime,name,address,phone,belongsId) VALUES(?,?,?,?,?)"
		var queryParams=[createdTime,ctx.request.query.name,ctx.request.query.address,ctx.request.query.phone,ctx.request.query.userId]
		console.log(queryParams)
		var searchSql = (querySql,queryParams) => {
			return new Promise((resolve, reject) => {
				console.log('准备查询')
				connection.query(querySql,queryParams, function(err, result) {
					if(err){
						reject(0)
						console.log(err+'err')
					}
					resolve(result)
				})
			})
		}
		var res= await searchSql(querySql,queryParams)
		if(res){
			data.code='0'
			data.msg="添加成功"
			ctx.body=data
		}else{
			data.code='1'
			data.msg="添加失败"
			ctx.body=data
		}
	}
});
//查询数据
router.get('/query', async (ctx, next) => {
	var data = {}
	console.log(ctx.request.query.pageNo - 1)
	var querySql="SELECT * FROM address where belongsId= '"+ctx.request.query.userId+"' limit "+ (ctx.request.query.pageNo-1)*ctx.request.query.pageSize+"," + ctx.request.query.pageSize
	var querySqlNo="SELECT * FROM address where belongsId= '"+ctx.request.query.userId+"'"
	var searchSql = (thesql) => {
		return new Promise((resolve, reject) => {
			console.log('准备查询')
			connection.query(thesql, function(err, result) {
				if(err){
					reject(0)
					console.log(err+'err')
				}
				resolve(result)
			})
		})
	}
	var res= await searchSql(querySqlNo)
	if(res){
		var datares= await searchSql(querySql)
		if(datares){
			var param={list:datares,total:res.length}
			data.code='0'
			data.msg="成功获取"
			data.data=param
			ctx.body=data
		}
		
	}
})
//更新数据
router.post('/update', async (ctx, next) => {
	var updateSql="UPDATE address SET name = '"+ctx.request.query.name+"', phone = '" + ctx.request.query.phone + "', address = '" + ctx.request.query.address +"' where id = '" +ctx.request.query.id + "'"
	var searchSql = (thesql) => {
		return new Promise((resolve, reject) => {
			connection.query(thesql, function(err, result) {
				if(err){
					reject(1)
					console.log(err+'err')
				}
				resolve(0)
			})
		})
	}
	var data={}
	var res= await searchSql(updateSql)
	
	if(res==0){
		data.msg="更新成功"
		data.code=0
		ctx.body=data
	}else{
		data.code=1
		data.msg="更新失败,请稍后再试!"
		ctx.body=data
	}
});
//删除数据
router.post('/remove', async (ctx, next) => {
	var deleteSql="DELETE FROM address WHERE "+"id='"+ctx.request.query.id + "'"
	var searchSql = (thesql) => {
		return new Promise((resolve, reject) => {
			connection.query(thesql, function(err, result) {
				if(err){
					reject(1)
					console.log(err+'err')
				}
				resolve(0)
			})
		})
	}
	var data={}
	var res= await searchSql(deleteSql)
	
	if(res==0){
		data.msg="删除成功"
		data.code=0
		ctx.body=data
	}else{
		data.code=1
		data.msg="删除失败,请稍后再试!"
		ctx.body=data
	}
});

精华部分

  1. 拼接sql操作语句
  2. 执行sql操作语句
  3. 处理结果

增删改查sql语句
增 :INSERT INTO address (createdTime,name,address,phone,belongsId) VALUES(?,?,?,?,?)
var queryParams=[createdTime,ctx.request.query.name,ctx.request.query.address,ctx.request.query.phone,ctx.request.query.userId]
address 为查询表名称 queryParams为插入的新数据对应上面?的个数 也可直接讲问号替换为对应的值
删:“DELETE FROM address WHERE “+“id=‘11111’’” id=‘11111’ 为删除符合的条件
address 为查询表名称 WHERE 为满足删除的条件
改:“UPDATE address SET name = '”+ctx.request.query.name+”’, phone = ‘" + ctx.request.query.phone + "’, address = ‘" + ctx.request.query.address +"’ where id = ‘" +ctx.request.query.id + "’"
address 为查询表名称 SET 和where之间为插入数据 where后为插入数据的id
查:SELECT * FROM address where belongsId= ‘"+ctx.request.query.userId+"’ limit “+ (ctx.request.query.pageNo-1)*ctx.request.query.pageSize+”," + ctx.request.query.pageSize
pageNo为查询页码 pageSize为查询条数 belongsId=“” 为查询条件 address 为查询表名称

执行sql语句的方法 可统一封装减小代码量

var searchSql = (thesql) => {
		return new Promise((resolve, reject) => {
			connection.query(thesql, function(err, result) {
				if(err){
					reject(1) //返回状态
					console.log(err+'err')
				}
				resolve(0) //返回状态 //只有查询有具体返回内容
			})
		})
	}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个koa配置swagger接口的示例,包含增删改查操作: ```javascript const Koa = require('koa'); const Router = require('koa-router'); const swagger = require('swagger2'); const { validate } = require('swagger2-koa'); const bodyparser = require('koa-bodyparser'); const app = new Koa(); const router = new Router(); const spec = swagger.loadDocumentSync('./swagger.yaml'); if (!swagger.validateDocument(spec)) { throw Error(`./swagger.yaml does not conform to the Swagger 2.0 schema`); } router.get('/users', async (ctx) => { // 查询用户列表 const users = await User.find(); ctx.status = 200; ctx.body = { users }; }); router.get('/users/:id', async (ctx) => { // 查询单个用户 const user = await User.findById(ctx.params.id); if (!user) { ctx.status = 404; ctx.body = { error: 'User not found' }; } else { ctx.status = 200; ctx.body = { user }; } }); router.post('/users', async (ctx) => { // 创建用户 const user = await User.create(ctx.request.body); ctx.status = 201; ctx.body = { user }; }); router.put('/users/:id', async (ctx) => { // 更新用户 const user = await User.findByIdAndUpdate(ctx.params.id, ctx.request.body, { new: true }); if (!user) { ctx.status = 404; ctx.body = { error: 'User not found' }; } else { ctx.status = 200; ctx.body = { user }; } }); router.delete('/users/:id', async (ctx) => { // 删除用户 const user = await User.findByIdAndDelete(ctx.params.id); if (!user) { ctx.status = 404; ctx.body = { error: 'User not found' }; } else { ctx.status = 204; } }); app.use(bodyparser()); app.use(validate(spec)); app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000, () => { console.log('Server running on http://localhost:3000'); }); ``` 以上示例中,我们通过koa-router来定义了5个接口: - 查询用户列表:GET /users - 查询单个用户:GET /users/:id - 创建用户:POST /users - 更新用户:PUT /users/:id - 删除用户:DELETE /users/:id 在每个接口的处理函数中,我们使用了Mongoose来进行数据库操作。返回的数据都被包装在了一个对象中,以符合Swagger规范。 为了让这些接口符合Swagger规范,我们使用了swagger2-koa中间件来校验请求和响应的数据格式。同时,我们也编写了一个swagger.yaml文件来对接口进行定义和描述。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值