koa中遇到的坑

648 阅读1分钟

1.post请求

post请求要获取参数需要装 npm install koa-bodyparser --save-dev

let bodyParser = require('koa-bodyparser');
app.use(bodyParser());//要在使用路由前用,不然post请求获取不到参数

注意app.use(bodyParser())一定要放在app.use(router.routes())的前面,不然无法从tx.request.body拿到post的参数

2.get或post请求时,偶尔返回Not Found

koa的执行机制,当处理请求的时候,如果函数执行完毕之前你没有通过ctx.response.body返回信息,不论你执行的结果是什么,他都会给你返回一个404状态码的not found信息,在浏览器中显示的结果为访问请求404,然后有一个not found字符串返回。通过await可以拦截事件的执行,保证操作完成后再去返回你想返回的信息,这样就可以解决not found的问题了

exports.getProjectList =  async(ctx, next) => {
	let conditions = {};
	let responseData = null;
	try {
		let result = await Project.find(conditions);
		responseData = result || [];	
		tx.response.body = responseData;
	} catch {
		console.error('Error:' + error);
	}
	
	
	//不能写成下面的形式,不然有时候会返回not found
	// await Project.find(conditions, (error, result) => {
	// 	if (error) {
	// 		console.error('Error:' + error);
	// 	} else {
	// 		responseData = result || [];	
	// 		ctx.response.body = responseData;
	// 	}
	// });

};